我正在嘗試使用connect-redis的快速會話來存儲用戶會話。目前,在用戶登錄後,我返回req.sessionID
,然後每當用戶想要向api的安全部分發出請求時,他/她必須提供會話ID。認證中間件然後返回到redis並檢查會話是否存在,如果是,則將當前會話替換爲存儲在Redis中的會話。req.session沒有方法'touch'?
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'
我似乎無法找到任何人在網上有這個錯誤,因爲觸摸()是一個內置的功能來express-會話。請幫忙?我的快速會話版本是1.9.3。
我一直有同樣的問題幾天。我使用的是較舊版本的Express 3.x,但即使升級到4.x後,問題仍然存在 –