除了会话ID之外,Connect.sid cookie字符串中还有哪些附加信息? [英] What is the additional information in connect.sid cookie string apart from the session id?

查看:13
本文介绍了除了会话ID之外,Connect.sid cookie字符串中还有哪些附加信息?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将Node JS与Express-Session一起使用。

此处回答的一个问题建议使用req.cookies[‘Connect.sid’]来获取会话ID。另一个答案建议使用req.essionID

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

s:G1wOJoUAhhemRQqCs7dAGlMIk5ZGaJUg.z1/HrHTfndRqKpXza8qWuwHLS067xrWfVgqTDDGYoos

req.essionID的字符串如下:

G1wOJoUAhhemRQqCs7dAGlMIk5ZGaJUg

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

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

谢谢,

达伦

推荐答案

快速会话在服务器端存储所有会话信息。如果您使用SQL数据库,则会有一个用于会话的表,如下所示:

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

这就是对您的问题的回答,也是对数据含义的简短解释,会话ID只是访问仅在服务器端可用的数据的(主)键。

从您的问题看,您似乎打算错误地使用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身份验证都是由中间件自动处理的。

这篇关于除了会话ID之外,Connect.sid cookie字符串中还有哪些附加信息?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆