【问题标题】:Efficient way to handle user roles处理用户角色的有效方法
【发布时间】:2023-03-13 02:21:01
【问题描述】:

我正在开发一个用户角色很少的门户。我一直想知道处理它们的最佳方法是什么。我已经为用户和客户创建了单独的表格,但是客户会想要这个功能,因为用户和用户也可以很容易地成为客户。

我也不想做很多关节,所以我的想法是这样的:

我将拥有 4 个不同的用户角色(至少目前如此),如下所示:

user
client
reviewer
admin

我将为每个角色分配“id”。同时,我将在 mysql 中保留这些角色的表。它会是这样的:

1 - admin
2 - reviewer
3 - client
4 - user

该表只会在创建用户时使用,以获取用户“权限”的代码。所以假设会有一个人是用户和审阅者。他的角色是 24 岁。

login  password  email role     created
----------------------------------------------------------
guy    password  guy@gmail.com  24 2012-12-08 23:12:30

我认为这可以很好地工作,但仍然想问一下你们是否认为这是一个好的有效的解决方案。 谢谢

【问题讨论】:

    标签: mysql database theory roles


    【解决方案1】:

    另一种方法是创建一个多对多 USER_ROLE 表,对于您的示例,该表将具有以下整体。

    login role
    guy   2
    guy   4
    

    我通常更喜欢这种跟踪角色的方法。在这种情况下,对这个表的连接应该是快速而轻松的,特别是如果您转而使用 user_id 而不是登录名,并适当地建立索引。

    【讨论】:

    • 当然会有user_id,比如我写的很快。我也在考虑这个,但还是不太喜欢加入那里。
    【解决方案2】:

    您所定义的是基于角色的访问控制系统(我建议您查找相关资源)。 RBAC 系统将有一个单独的用户表和另一个角色表。用户和角色之间会有多对多的关系。此外,您会将权限表连接到另一个多对多关系中的角色。附图代表如何实现这个系统:RBAC SYSTEM IN MYSQL

    之前有人问过类似的问题:How to design a hierarchical role based access control system

    【讨论】:

      猜你喜欢
      • 2020-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多