【问题标题】:What is the additional information in connect.sid cookie string apart from the session id?除了会话 ID 之外,connect.sid cookie 字符串中的其他信息是什么?
【发布时间】:2022-03-11 16:27:05
【问题描述】:

我正在使用带有 express-session 的 Node JS。

这里回答的一个问题建议使用 req.cookies['connect.sid'] 来获取会话 ID。另一个答案建议我使用 req.sessionID

当我比较两者时,req.cookies['connect.sid'] 有如下字符串:

s:G1wOJoUAhhemRQqCs7dAGlMIk5ZGaJUg.z1/HrHTfndRqKpXza8qWuwHLS067xrWfVgqTDDGYoos

req.sessionID 有如下字符串:

G1wOJoUAhhemRQqCs7dAGlMIk5ZGaJUg

如果第二个字符串是会话 ID (G1wOJoUAhhemRQqCs7dAGlMIk5ZGaJUg),connect.sid cookie 中的其他信息是什么?

尝试通过谷歌和其他网站寻找答案,但没有成功。

谢谢,

达伦

【问题讨论】:

    标签: node.js cookies session-cookies


    【解决方案1】:

    express-session 在服务器端存储所有会话信息。如果您使用 sql 数据库,您将有一个用于会话的表,如下所示:

                 sid                 |      sess       |     expire
    R02GJn2GoyaqRyten1BEGbHa0XCbj529 | {"cookie": "originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"mybool":true,"userid":16}
    

    这就是您问题的答案,也是对数据含义的简短说明,sessionID 只是访问仅在服务器端可用的数据的(主)键。

    现在从您的问题来看,您似乎打算错误地使用 express-session。

    要在您的 express 服务器上使用 express-session,您可以像这样包含它:

    const session = require('express-session');
    app.use(session({
        name : 'mycookie',
        secret : 'mysecret',
        saveUninitialized : false,
        resave : true
    }));
    

    在此之后进入所有后续路由的每个请求都将具有.session 属性。在任何情况下,您都不应该自己访问会话 ID,中间件本身会根据 store you used for express-session 对每个请求进行身份验证。

    app.get('/givemeasession',function(req,res,next){
        req.session.mybool = true;
        req.session.somedata = 'mystring';
        req.session.evenobjects = { data : 'somedata' };
        res.send('Session set!');
    });
    
    app.get('/mysession',function(req,res,next){
        res.send('My string is '+req.session.somedata+' and my object is '+JSON.stringify(req.session.evenobjects));
    });
    

    底线:您永远不需要自己访问 cookie,或者对它做任何事情,因为任何 cookie 身份验证都由中间件自动处理。

    【讨论】:

    • 好的,谢谢。不,我没有错误地使用 express-session 我只是想在我的数据库中存储唯一的会话信息以提供更多的报告选项,并且想知道我应该走多远。你回答了。
    • 通常你不会在数据库中存储会话,它们在高流量环境中太慢了。并为数据库带来不必要的负载。在会话中使用 Redis、memcached 之类的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 2019-11-05
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    相关资源
    最近更新 更多