【发布时间】:2015-11-01 16:55:27
【问题描述】:
在我的应用中,如果用户未登录,我会限制对某些操作和页面的访问。我有:
var restrict = function(req, res, next) {
if (!req.user) {
console.log("USER isn't logged in.")
return res.status(403).send('Access or action denied, please log in');
}
next();
}
app.get('/stocks', restrict, MainHandler.findAllStocksFromUser);
app.get('/stocks/:id', MainHandler.findStockByIdAndDates);
app.put('/stocks/:id/stockActions', restrict, MainHandler.handleStockAction);
我实际上是在每次客户端向服务器发出请求时尝试刷新会话,以便服务器不会在不应该注销用户/销毁会话时。为了进行测试,我希望会话过期/如果 20 秒后用户没有向服务器发出请求,则用户将被注销。我有:
app.use(session({secret: 'secret', saveUninitialized: true, resave: true, expires: new Date(Date.now() + (20000))}));
然后我尝试使用中间件在每次使用发出请求时刷新过期日期:
// Session-persisted message middleware
app.use(function(req, res, next){
req.session.cookie.expires = new Date(Date.now() + 20000);
next();
});
但是,如果我从客户端登录并单击周围,导致向服务器发出请求,尽管尝试在中间件中“刷新”会话,但 20 秒后我仍然在客户端上收到登录错误。我也尝试过使用与中间件相同的策略来使用 maxAge。有任何想法吗?谢谢!
【问题讨论】:
标签: node.js express session-cookies passport.js session-timeout