除了会话ID之外,Connect.sid cookie字符串中还有哪些附加信息? [英] What is the additional information in connect.sid cookie string apart from the session id?
本文介绍了除了会话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屋!
查看全文