В моем приложении я ограничить некоторый доступ к некоторым действиям и страницам, если пользователь не вошел в меня:Обновление/Освежающий Экспресс Session
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, используя ту же стратегию с промежуточным программным обеспечением. Есть идеи? Благодаря!
Вы можете попытаться использовать https://github.com/expressjs/session#sessionregenerate –