【发布时间】:2019-01-11 21:29:30
【问题描述】:
- 用户提交登录 POST 数据。 passport.js 进行身份验证。
req.isAuthenticated()是true。 - 将用户从登录路径重定向到主页
- 在主页路由中,
req.isAuthenticated()现在是false。 - 重新加载主页(浏览器 GET)。现在主页
req.isAuthenticated()显示为true并在后续请求中保持true直到退出。
- 在主页路由中,
我想说,这种情况大约有 80% 的时间发生。另外 20%,在重定向和后续重新加载时,主页 req.isAuthenticated() 是 true。
我找到了similar question,但我认为答案似乎不像评论所指出的那样正确,因为在我的设置下,后续请求在注销之前都得到了正确的身份验证。
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
}
})
);
如何解决这个问题?
【问题讨论】:
标签: javascript node.js express passport.js passport-local