我在 Nodejs 应用程序中有一个 RESTful Api,我在发送带有数据或 404 的响应之前检查用户 Angular 色。
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 路由的获取、发布、放置和删除参数中的 Angular 色(例如),并基本上编写相同的代码。有更好的方法吗?
根据 adneo 答案,我正在检查/user 路由之前的 Angular 色:
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 中不同动词的所有逻辑都将执行。
最佳答案
您可以使用 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);
});
关于javascript - 为整个路线nodejs申请条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29926502/