req.isAuthenticated() 总是在护照本地策略之外返回 false

时间:2021-03-30 01:21:20

标签: node.js reactjs express authentication passport.js

当我在成功登录后在本地登录策略中调用 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) 非常感谢您的帮助,因为我觉得我对这个问题毫无进展。

0 个答案:

没有答案
相关问题