Я использую express, express -сессию и паспорт в моем приложении node.js и возникают проблемы при выполнении автоматического выхода из системы.
инициализация:
expressapp.use(session({
secret: '****',
cookie: { maxAge: 1000 * 60 * 60 }, // 1h
saveUninitialized: false,
resave: true
}));
expressapp.use(passport.initialize());
expressapp.use(passport.session());
my код выхода из системы:
expressapp.get('/profile/', isLoggedIn, function (req, res) {
logger.info('get profile view!');
res.render('profile');
});
expressapp.get('/logout', function(req, res) {
logger.info('logging out..');
req.session.destroy(function (err) {
res.redirect('/');
});
});
expressapp.post('/login', passport.authenticate('login', {
successRedirect: '/#!/profile',
failureRedirect: '/#!/login',
}));
function isLoggedIn(req, res, next) {
if(req.isAuthenticated()) {
logger.info('authenticated!');
return next();
} else {
logger.info('unauthorized!');
res.render('login');
}
}
У меня возникает проблема, если я нажимаю кнопку выхода из системы, вызывается функция, и меня перенаправляют, но при возврате в профиль функции, перечисленные выше, больше не вызывают (журналы не распечатаны), поскольку они все еще где-то сохраняются. Только после перезагрузки сайта я перенаправляюсь на страницу входа. Это не работает для меня при автоматическом выходе из системы, поскольку я не перезагружаю страницу.
Я также пытался вызвать req.logout () в маршруте выхода из системы, но с тем же результатом.
Как заставить эти функции вызываться при каждом нажатии, а не при каждой перезагрузке сайта? Где хранится эта информация?