当我在成功登录后在本地登录策略中调用 req.isAuthenticated() 时,它总是按原样返回 true。但是,当我尝试在我的 express 服务器中的任何其他文件/路由中调用 req.isAuthenticated 时,它总是返回 false,即使我有成功的登录 cookie 和会话。有谁知道这是为什么?如果没有,有没有人有任何好的开源替代品来代替passport.js 进行身份验证?
来自快递服务器的相关代码:
app.use(session({
secret: process.env.AUTH_SECRET,
resave: false,
saveUninitialized:false,
cookie: {
secure: false,
expires: cookieExpirationDate
}
})); // session secret
app.use(passport.initialize());
app.use(passport.session());
...
app.get('/logincheck', (req, res) =>{ //route called by front end component to check auth status
if(req.isAuthenticated()){ //returns false even with cookie and session in browser
res.json({isAuth: true})
}
else res.json({isAuth: false})
})
本地登录策略相关代码:
var userinfo = user.get();
req.login(user, function(error) {
if (error) return next(error);
console.log('success!')
})
console.log(req.isAuthenticated()) //always returns true on successful login
return done(null, userinfo);
我已经尝试了本期讨论的所有相关解决方案: passport's req.isAuthenticated always returning false, even when I hardcode done(null, true) 非常感谢您的帮助,因为我觉得我对这个问题毫无进展。