问题描述
我有一个正在运行的NodeJS Web应用程序,它具有表达,猫鼬,通行证js以及与此问题无关的其他模块。
当用户成功通过登录页面登录时,他们将被重定向到“ / memberdashboard”。 同样,当管理员通过登录页面成功登录后,他们将被重定向到“ / admindashboard”。
两个集合都有一个“用户名”和“密码”字段。 但是,在我的Admin集合中,有一个额外的字段“ isAdmin”,其类型为Boolean。
例如,如果userA具有{“ isAdmin”:true},它们将被重定向到/ admindashboard,否则它们将被重定向到/ memberdashboard。
一些代码可能有助于解释我要实现的目标。
app.get("/memberdashboard",function(req,res) {
if(req.isAuthenticated()) {
res.render("memberdashboard");
} else {
res.redirect("/member");
}
});
app.get("/admindashboard",res) {
if(req.isAuthenticated()) {
res.render("admindashboard");
} else {
res.redirect("/admin");
}
});
我的目标是利用它
if(req.isAuthenticated() && //User is Admin) {
//redirect to appropriate page
}
希望这很清楚:)
解决方法
用户经过身份验证后,
Afaik护照将填充req.user
。因此,您可以将/membershipdashboard
的支票扩展为:
if (req.isAuthenticated()) {
if (req.user.isAdmin) {
return res.redirect("/admin");
}
res.render("memberdashboard");
} else {
res.redirect("/member");
}
对于/admindashboard
路由,您可以反之亦然。