首页 > 解决方案 > 检查用户是否登录passport.js

问题描述

我使用 passport.js 来验证用户身份。我有两个功能来检查用户是否登录。第一个功能:

isLoggedIn(req, res, next) {
        if (req.isAuthenticated()) {
            return next();
        }
        else {
            res.redirect('/');
        }
    }

第二个功能:

isLoggedInCheck(req, res) {
        if (req.isAuthenticated()) {
            return true;
        }
        else {
            return false;
        }
    }

我在名为 Helper 的类中使用这两个函数。当我使用第一个函数(我将它作为中间件传递到路由函数中)时,它可以工作:

var Helper = require('../helpers/helper');
var helper = new Helper();
router.get('/', helper.isLoggedIn, admin.melihat_daftar_venue);

但是当我想使用第二个功能时:

if (helper.isLoggedInCheck) {
//code
}
else{

}

该函数只返回函数定义而不是真/假。如何修复它。谢谢

标签: javascriptnode.jsexpresspassport.js

解决方案


isLoggedIn在内部条件中用作 ExpressJS 中间件,isLoggedInCheck这就是为什么您需要调用函数(helper.isLoggedInCheck(req, res)内部 if 条件而定义内部get函数

if (helper.isLoggedInCheck(req, res)) {
//code
}
else{

}

第一个是

router.get('/', helper.isLoggedIn, admin.melihat_daftar_venue);

(不推荐,仅显示示例)

router.get('/', (req, res, next) => {
  helper.isLoggedIn(req, res, next)
}, admin.melihat_daftar_venue);

推荐阅读