- Пользователь отправляет вход в данные POST. passport.js аутентифицируется.
req.isAuthenticated()
равно true
.
- Перенаправить пользователя на домашнюю страницу от входа в маршрут
- На маршруте hompage
req.isAuthenticated()
теперь false
.
- Обновить домашнюю страницу (браузер GET). Теперь домашняя страница
req.isAuthenticated()
читает true
и остается true
в последующих запросах до выхода из системы.
Я бы сказал, это происходит примерно в 80% случаев. Остальные 20%, hompage req.isAuthenticated()
- это true
при перенаправлении и последующих перезагрузках.
Я нашел похожий вопрос , но я не думаю, что ответ кажется неправильным, как указано в комментарии, и поскольку с моей настройкой последующие запросы корректно аутентифицируются до момента их выхода.
router.post('/sign_in', (req, res) =>
{
passport.authenticate
(
'local',
(err, user, info) =>
{
if(!err && user)
{
req.logIn(user, (err) =>
{
if(!err)
{
console.log('s', req.isAuthenticated()); // <-- true
res.setHeader('Cache-Control', 'no-cache');
return res.redirect('/');
}
});
}
}
)(req, res);
}
И:
router.get('/', async (req, res) =>
{
console.log('h', req.isAuthenticated()); // <-- false ???
res.send();
}
Если это имеет значение, мои настройки сеанса выглядят так:
app.use
(
session
({
store : //...
secret : process.env.SESSION_SECRET,
resave : false,
saveUninitialized : true,
cookie :
{
httpOnly : false,
secure : false,
maxAge : null
}
})
);
Как это можно исправить?