在Node.js Web服务器中,确定用户角色和授予API访问权限的正确方法是什么?
我在Node.js-express设置中有一个带有RESTAPI的Web服务器。我公开了不同的API,并使用OAuth对用户进行身份验证。一旦我识别了用户,我将检索他的角色并决定授予API权限。问题是我所有的API都有重复的代码,所有API都必须检查角色并确定权限。有没有更好的办法?我应该看看ACL吗?一般来说,我是Web服务的新手,可能不知道最好的解决方案。谢谢 示例代码:在Node.js Web服务器中,确定用户角色和授予API访问权限的正确方法是什么?,node.js,rest,authentication,express,Node.js,Rest,Authentication,Express,我在Node.js-express设置中有一个带有RESTAPI的Web服务器。我公开了不同的API,并使用OAuth对用户进行身份验证。一旦我识别了用户,我将检索他的角色并决定授予API权限。问题是我所有的API都有重复的代码,所有API都必须检查角色并确定权限。有没有更好的办法?我应该看看ACL吗?一般来说,我是Web服务的新手,可能不知道最好的解决方案。谢谢 示例代码: var accessCallback = function (err, user) { if(err == nu
var accessCallback = function (err, user) {
if(err == null) {
var userRole = getUserRole (user.role_id);
if(userRole == ROLE.SUPERVISOR || userRole == ROLE.MANAGER || userRole == ROLE.EMPLOYEE){
doStuff(); //business logic
}
else {
response.status(400).send (error.UserAccessDeniedError());
}
}
else {
response.status(500).send(error.DatabaseError(err));
}
};
access.determineUser (req.body.tokenID, accessCallback);
您可以做的是声明一个允许该用户的角色列表,并检查该用户的角色是否在该列表中:
var userRole = getUserRole(user.role_id);
function foo(error, user) {
if(error == null) {
var authorizedRoles = [
ROLE.SUPERVISOR,
ROLE.MANAGER
];
if(authorizedRoles.indexOf(userRole) > -1) {
//Authorized
} else {
//Error
}
} //...
然后,您可以配置每个API点的授权角色,甚至可以将验证放在中间件函数中