sta*_*ash 3 javascript node.js express
我在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);
});
Run Code Online (Sandbox Code Playgroud)
当前,我必须检查用户在/ users路由的get,post,put和delete参数中的角色(例如),并基本上编写相同的代码。有更好的方法吗?
根据adneo的答案,我正在/ user路由之前检查角色:
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)
})
Run Code Online (Sandbox Code Playgroud)
如果授权用户,将执行/ 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);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
370 次 |
| 最近记录: |