【发布时间】:2014-08-31 05:24:56
【问题描述】:
我在我的express.js 应用程序中使用了一个简单的中间件功能来验证用户是否具有管理员权限:
function isAdmin (req, res, next) {
if (req.user.admin)
return next();
res.redirect("/");
}
passport 正在用于帐户身份验证。
这是安全的还是可以将req.user.admin 注入到不应具有管理员权限的用户的请求中?我是否应该先找到一个用户,然后检查该用户是否具有管理员权限?例如:
function isAdmin (req, res, next) {
if (req.user) {
User.findOne({ "_id" : req.user._id }, function (err, user) {
if (err) {
throw err;
} else if (user.admin) {
return next();
} else {
res.redirect("/");
}
})
} else {
res.redirect("/");
}
}
对我来说,这似乎是不必要的复杂。它还会导致更多的数据库访问。这是否有必要验证用户是否真正是管理员或者我的第一个功能是否足够?从本质上讲,谁可以查看或更改req,从而查看或更改req.user?
【问题讨论】:
-
这个问题可能与您有关:stackoverflow.com/questions/24649274/…
标签: javascript node.js express passport.js