正在validation用户是否是基于req.user安全的pipe理员?
我在我的express.js
应用程序中使用简单的中间件function来validation用户是否具有pipe理员权限:
function isAdmin (req, res, next) { if (req.user.admin) return next(); res.redirect("/"); }
passport
正在用于帐户validation。
这是安全的还是可以req.user.admin
被注入请求谁不应该有pipe理员权限的用户? 我应该先find一个用户,然后检查用户是否具有pipe理员权限? 例如:
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("/"); } }
对我来说,这似乎是不必要的复杂。 这也会导致更多的数据库访问。 这是否需要validation用户是真正的pipe理员还是我的第一个function足够? 实质上,谁可以查看或更改req
,从而req.user
?
我对护照并不熟悉,但是如果它与express-session的工作方式相似,req.session对象就被存储在一个(可能是encryption的)cookie中,所以如果你build立一个authentication系统,你可以存储用户信息在req.session.user和有信心是安全的。