Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用Express&;检查MongoDB文档中的特定字段;护照_Node.js_Express_Mongoose_Passport.js_Express Session - Fatal编程技术网

Node.js 如何使用Express&;检查MongoDB文档中的特定字段;护照

Node.js 如何使用Express&;检查MongoDB文档中的特定字段;护照,node.js,express,mongoose,passport.js,express-session,Node.js,Express,Mongoose,Passport.js,Express Session,我有一个NodeJS Web应用程序正在运行,它有express、mongoose、passportjs等与这个问题无关的模块 我的数据库中有两种类型的用户,每种用户都有自己的集合 使用者 管理员 当用户通过登录页面成功登录时,他们将被重定向到“/memberdashboard”。 类似地,当管理员通过登录页面成功登录时,他们会被重定向到“/admindashboard” 两个集合都有“用户名”和“密码”字段。 然而,在我的管理集合中,有一个额外的字段“isAdmin”,它是布尔类型的 我想重定

我有一个NodeJS Web应用程序正在运行,它有express、mongoose、passportjs等与这个问题无关的模块

我的数据库中有两种类型的用户,每种用户都有自己的集合

  • 使用者
  • 管理员
  • 当用户通过登录页面成功登录时,他们将被重定向到“/memberdashboard”。 类似地,当管理员通过登录页面成功登录时,他们会被重定向到“/admindashboard”

    两个集合都有“用户名”和“密码”字段。 然而,在我的管理集合中,有一个额外的字段“isAdmin”,它是布尔类型的

    我想重定向的人谁登录到我的网站的基础上,他们是否是管理员

    例如,如果userA有{“isAdmin”:true},它们将被重定向到/admindashboard,否则它们将被重定向到/memberdashboard

    一些代码可能有助于解释我试图实现的目标

    app.get("/memberdashboard", function(req, res) {
    
        if(req.isAuthenticated()) {
    
            res.render("memberdashboard");
        } else {
            res.redirect("/member");
        }
    });
    
    app.get("/admindashboard", function(req, res) {
    
        if(req.isAuthenticated()) {
    
            res.render("admindashboard");
        } else {
            res.redirect("/admin");
        }
    });
    
    我的目标是利用

    if(req.isAuthenticated() && //User is Admin) {
        //redirect to appropriate page
    }
    

    希望这是清楚的:)

    一旦用户通过身份验证,Afaik passport就会填充
    req.user
    。因此,您可以将对
    /membershipdashboard
    的检查扩展到:

    if (req.isAuthenticated()) {
        if (req.user.isAdmin) {
            return res.redirect("/admin");
        }
        res.render("memberdashboard");
    } else {
        res.redirect("/member");
    }
    

    您可以对
    /admindashboard
    -路线执行此操作,反之亦然。

    感谢您的快速响应。您是对的,我可以使用req.user.fieldName访问字段