Daz*_*Daz 5 cookies session-cookies node.js
我正在将 Node JS 与 Express-Session 一起使用。
这里回答的一个问题建议使用 req.cookies['connect.sid'] 来获取会话 ID。另一个答案建议我使用 req.sessionID
当我比较两者时,req.cookies['connect.sid']有一个如下所示的字符串:
s:G1wOJoUAhhemRQqCs7dAGlMIk5ZGaJUg.z1/HrHTfndRqKpXza8qWuwHLS067xrWfVgqTDDGYoos
req.sessionID 具有如下所示的字符串:
G1wOJoUAhhemRQqCs7dAGlMIk5ZGaJUg
如果第二个字符串是会话 ID ( G1wOJoUAhhemRQqCs7dAGlMIk5ZGaJUg),那么 connect.sid cookie 中的其他信息是什么?
尝试通过谷歌和其他网站寻找答案,但没有成功。
谢谢,
达伦
express-session 存储服务器端的所有会话信息。如果您使用 SQL 数据库,您将有一个会话表,如下所示:
sid | sess | expire
R02GJn2GoyaqRyten1BEGbHa0XCbj529 | {"cookie": "originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"mybool":true,"userid":16}
Run Code Online (Sandbox Code Playgroud)
这就是您问题的答案,也是对数据含义的简短解释,sessionID 只是访问仅在服务器端可用的数据的(主)键。
现在从您的问题来看,您似乎计划错误地使用快速会话。
要在 Express 服务器上使用 Express-Session,您可以像这样包含它:
const session = require('express-session');
app.use(session({
name : 'mycookie',
secret : 'mysecret',
saveUninitialized : false,
resave : true
}));
Run Code Online (Sandbox Code Playgroud)
此后进入所有后续路由的每个请求都将具有一个.session属性。无论如何,您永远不需要自己访问会话 ID,中间件本身会针对您用于 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));
});
Run Code Online (Sandbox Code Playgroud)
底线:您不需要自己访问 cookie 或对其执行任何操作,因为任何 cookie 身份验证都会由中间件自动处理。
| 归档时间: |
|
| 查看次数: |
22241 次 |
| 最近记录: |