gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 00:33:16 24 4
gpt4 key购买 nike

我有一个采用 Node.js-express 设置的带有 REST API 的 Web 服务器。我公开了不同的 API,并使用 OAuth 来验证用户身份。一旦我识别出用户,我就会检索他的角色并决定授予 API 权限。问题是我的所有 API 都有重复的代码,并且所有 API 都必须检查角色并确定权限。有没有更好的方法来做到这一点?我应该看看ACL吗?一般来说,我是网络服务方面的新手,可能不知道最佳解决方案。谢谢。

示例代码:

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点的授权角色,甚至可以将验证放在中间件函数中。

关于node.js - 在 Node.js Web 服务器中确定用户角色并授予 API 访问权限的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40129913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com