You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:17:19