我正在尝试将express-session与connect-redis一起使用来存储用户 session 。当前,在用户登录后,我返回req.sessionID
,然后每当用户想要向api的安全部分发出请求时,他/她就必须提供 session ID。然后,身份验证中间件返回redis并检查该 session 是否存在,如果存在,则用存储在Redis中的 session 替换当前 session 。
function isLoggedIn(req, res, next){
var session_id = req.body.session_id;
if (!session_id){
res.send(401, {status: 0, message: "Not authorized"});
return;
}
console.log(req);
sessionStore.get(session_id, function(err, session){
if(err){
res.send(401, {status: 0, message: "Not authorized"});
return;
}
req.session = session;
req.sessionID = req.body.session_id;
return next();
});
}
但是由于某种原因,会出现此错误:
/node_modules/express-session/index.js:269
req.session.touch();
^
TypeError: Object #<Object> has no method 'touch'
我似乎找不到其他在线出现此错误的人,因为touch()是用于表达 session 的内置功能。请帮忙?我的快速 session 版本是1.9.3。
最佳答案
我有同样的错误。看来,如果您来自快速cookie session ,则可以设置req.session = {/* some arbitrary session object */}
。显然,req.session
在实例上有一些表达需求的方法。
因此,只需确保您没有在代码中的任何地方显式覆盖req.session
。
关于node.js - req.session没有方法 'touch'吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27592423/