如何管理相对于组的用户权限?

Posted

技术标签:

【中文标题】如何管理相对于组的用户权限?【英文标题】:How to manage user permissions relative to a group? 【发布时间】:2022-01-15 03:10:56 【问题描述】:

让我们使用一个抽象域,用户可以在其中创建组、邀请其他用户并在这些组中分配权限。

示意图如下所示

[
  
    "groupId": 1,
    "name": "Group 1",
    "users": [
        "id": 1, "name": "User 1", "permissions": ["A", "B", "C"] , // same
        "id": 2, "name": "User 2", "permissions": ["A", "B"] 
        "id": 3, "name": "User 3", "permissions": ["C"] 
    ]
  ,
  
    "groupId": 2,
    "name": "Group 2",
    "users": [
        "id": 4, "name": "User 4", "permissions": ["A", "B", "C"] ,
        "id": 5, "name": "User 5", "permissions": ["A", "B"] 
        "id": 1, "name": "User 1", "permissions": ["C"]  // same
    ]
  
]

应用中有 5 个用户(从 1 到 5)。每个用户在他们的组(A、B、C)中都有权限。

问题是:在网络客户端的哪里存储这个权限?

我使用 React.js + Node.js 并通过 JWT 管理我的身份验证。是否可以在用户的​​ JWT 中有一个对象来存储每个组的权限。像这样的

假 JWT


  "userId": 1,
  "groups": [ 
     "groupId": 1, "permissions": ["A", "B", "C"]  ,
     "groupId": 2, "permissions": ["C"]  
  ]

我还希望在不注销用户的情况下即时更新用户权限

有什么正确的建议吗?

【问题讨论】:

【参考方案1】:

如果您的授权规则(角色)变得复杂,那么明智的做法是考虑使用基于声明的授权方法。

我认为这个 SO 问题是一个很好的起点:

Role Based Authorization vs. Claim Based Authorization

【讨论】:

感谢您的建议。更清楚地说,我想知道我的具体案例的实现细节,而不是一般方法。

以上是关于如何管理相对于组的用户权限?的主要内容,如果未能解决你的问题,请参考以下文章

七 组管理和权限管理

组管理和权限管理

组管理和权限管理

Linux学习之组管理和权限管理

linux用户组和权限管理

Linux组与权限管理