gpt4 book ai didi

javascript - req.isAuthenticated() 重定向时发生变化?

转载 作者:行者123 更新时间:2023-12-03 00:24:26 25 4
gpt4 key购买 nike

  1. 用户提交登录 POST 数据。 Passport.js 进行身份验证。 req.isAuthenticated()true
  2. 将用户从登录路径重定向至主页
    • 在主页路由中,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();
}

如果重要的话,我的 session 设置如下所示:

app.use
(
session
({
store : //...
secret : process.env.SESSION_SECRET,
resave : false,
saveUninitialized : true,
cookie :
{
httpOnly : false,
secure : false,
maxAge : null
}
})
);

如何解决这个问题?

最佳答案

该问题似乎是由错误引起的。请参阅:

解决方法是在重定向之前保存 session 。

req.session.save(() =>
{
return res.redirect('/');
});

关于javascript - req.isAuthenticated() 重定向时发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54154304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com