如何使用 Express 和 Passportjs 检查 MongoDB 文档中的特定字段
How do I check a specific field in a MongoDB Document using Express & Passportjs
我有一个 NodeJS Web 应用程序 运行,它有 express、mongoose、passportjs 以及其他与这个问题无关的模块。
有两种类型的用户,每种用户在我的数据库中都有自己的集合。
- 用户
- 管理员
当用户通过登录页面成功登录时,他们将被重定向到“/memberdashboard”。
同样,当管理员通过登录页面成功登录时,他们将被重定向到“/admindashboard”。
两个集合都有“用户名”和“密码”字段。
但是在我的 Admin 集合中,有一个布尔类型的额外字段“isAdmin”。
我想根据他们是否是管理员来重定向登录我网站的人。
例如,如果用户 A 有 {"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 护照就会填充 req.user
。因此,您可以将 /membershipdashboard
的检查扩展为:
if (req.isAuthenticated()) {
if (req.user.isAdmin) {
return res.redirect("/admin");
}
res.render("memberdashboard");
} else {
res.redirect("/member");
}
您可以对 /admindashboard
路线执行此操作 vice-versa。
我有一个 NodeJS Web 应用程序 运行,它有 express、mongoose、passportjs 以及其他与这个问题无关的模块。
有两种类型的用户,每种用户在我的数据库中都有自己的集合。
- 用户
- 管理员
当用户通过登录页面成功登录时,他们将被重定向到“/memberdashboard”。 同样,当管理员通过登录页面成功登录时,他们将被重定向到“/admindashboard”。
两个集合都有“用户名”和“密码”字段。 但是在我的 Admin 集合中,有一个布尔类型的额外字段“isAdmin”。
我想根据他们是否是管理员来重定向登录我网站的人。
例如,如果用户 A 有 {"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 护照就会填充 req.user
。因此,您可以将 /membershipdashboard
的检查扩展为:
if (req.isAuthenticated()) {
if (req.user.isAdmin) {
return res.redirect("/admin");
}
res.render("memberdashboard");
} else {
res.redirect("/member");
}
您可以对 /admindashboard
路线执行此操作 vice-versa。