passport.js中isLoggedInCheck返回函数定义而非布尔值,如何修复?
修复isLoggedInCheck函数的调用问题
这个问题其实挺典型的,核心原因就是你只是引用了函数本身,没有实际调用它。
你现在写的if (helper.isLoggedInCheck),本质上是在判断这个函数是否存在——在JavaScript里,函数对象本身属于真值,所以这个判断永远会返回true,完全没拿到你想要的登录状态布尔值。
正确的调用方式
你需要传入req和res参数来执行这个函数,这样才能获取到预期的true/false结果:
if (helper.isLoggedInCheck(req, res)) { // 这里写用户已登录后的逻辑 } else { // 这里写用户未登录的逻辑 }
可选的简化优化
看你的isLoggedInCheck函数代码,其实根本没用到res参数,你可以把它简化一下,去掉多余的参数:
isLoggedInCheck(req) { return req.isAuthenticated(); }
这样调用的时候只需要传req就行,代码更简洁:
if (helper.isLoggedInCheck(req)) { // ... }
最后再提一句:作为路由中间件的isLoggedIn是靠框架自动传参调用的,但isLoggedInCheck是你自己使用的工具函数,必须主动调用并传入请求对象,才能得到正确的登录状态。
内容的提问来源于stack exchange,提问作者jordie_f
相关产品推荐
相关产品推荐

