在Node.js Web-Server中确定用户angular色并授予API访问权限的正确方法是什么?

我在Node.js-express中有一个带有REST API的Web服务器。 我有不同的API暴露,我使用OAuthauthentication用户。 一旦我确定用户我检索他的angular色,并决定授予一个API的权限。 问题是我所有的API都重复了代码,他们都必须检查angular色并确定权限。 有没有更好的方法来做到这一点? 我应该看ACL吗? 一般来说,我是Web服务的新手,可能不知道最好的解决scheme。 谢谢。

示例代码:

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); 

你可以做的是声明一个允许用户的angular色列表,并检查用户的angular色是否在列表中:

 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 } } //... 

然后,您可以configuration每个API点的授权angular色,甚至将validation放在中间件function中。