我正在使用 Express/Node.js 和 Passport.js(passport-local) & Mongoose 构建一个应用程序。
有两种用户:
- 普通用户(他们使用
/user-login
页面和护照策略登录'local-user-login'
;普通用户存储在“用户”MongoDB 集合中) - 管理员(他们使用
/admin-login
页面和护照策略登录'local-admin-login'
;管理员存储在“管理员”MongoDB 集合中)
我也有 2 个页面:(仅/user_home
需要登录的普通用户访问)和/admin_home
(仅适用于登录的管理员)
路线/user_home
:
app.get('/user_home', isLoggedIn, function(req, res) {
// render the page
});
function isLoggedIn(req, res, next) {
if (req.isAuthenticated())
return next();
res.redirect('/login');
}
如果我以管理员身份登录并尝试访问/user_home
,它不允许我访问,这很好。我的问题是:如何定义另一个“ isLoggedIn
”函数来检查我是否以管理员身份而不是普通用户身份登录?理想情况下,我想要一个函数“isLoggedInAsUser”和另一个函数“isLoggedInAsAdmin”。
到目前为止,我尝试/admin_home
以相同的方式定义路线:
app.get('/admin_home', isLoggedIn, function(req, res) {
// render the page
});
但很明显为什么它不起作用。该代码不知道我希望它检查它是否是管理员而不是普通用户。