【问题标题】: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"]  }
  ]
}

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

有什么正确的建议吗?

【问题讨论】:

    标签: javascript reactjs permissions jwt


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的建议。更清楚地说,我想知道我的具体案例的实现细节,而不是一般方法。
    猜你喜欢
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 2018-04-22
    • 2012-12-14
    • 1970-01-01
    • 2012-11-01
    相关资源
    最近更新 更多