我在Nodejs应用程序中有一个RESTful Api,我在发送带有数据或404的响应之前正在检查用户角色。
apiRouter.route('/users')
.get(function (req, res) {
var currentUser = req.decoded; // getting logged in user here
if(currentUser.isInstructor || currentUser.isAdmin){ //checking for user's role
User.find(function (err) {
if(err)
res.send(err);
}).exec(function (err, users) {
res.json(users);
})
}else
res.send(404);
});
目前,我必须检查用户在/ users route(例如)的get,post,put和delete params中的角色,并基本上编写相同的代码。有没有更好的方法呢?
根据adneo答案,我正在检查/用户路线前的角色:
apiRouter.all('/users', function (req, res, next) {
var currentUser = req.decoded;
var isAuthorized = false;
if (currentUser.isInstructor || currentUser.isAdmin)
isAuthorized = true;
if(!isAuthorized)
res.send(404)
})
如果用户被授权,/ users中不同动词的所有逻辑都将被执行。
答案 0 :(得分:4)
您可以使用router.all
将其附加到所有HTTP谓词等
apiRouter.all('/users', function (req, res, next) {
var currentUser = req.decoded; // getting logged in user here
if(currentUser.isInstructor || currentUser.isAdmin){ //checking for user's role
User.find(function (err) {
if(err)
res.send(err);
}).exec(function (err, users) {
res.json(users);
})
}else
res.send(404);
});