【问题标题】:Ways to put user roles in a database将用户角色放入数据库的方法
【发布时间】:2015-02-16 09:27:40
【问题描述】:

在数据库中存储用户角色最有效的方法是什么?

例如权限是这样的:

应该有查看页面的权限:

  • 第1页
  • 第2页
  • 第3页
  • 第4页

因此,在上述情况下,您应该有权查看 Page1Page2,但也有权查看 Page3

你可以

  • 删除帖子
  • 创建帖子
  • 编辑帖子

仅在 Page2

所有这些组合的可能性都应该有自己的作用。

现在我不知道如何将其存储在表格中。

我想过创建一个这样的表:

role | page1 | page2 | page3 | page4 | page5 | page6 | delete | create | edit |
role1| yes   | yes   | no    | no    | no    | no    | yes    | no     | yes  |

但我认为使用它的组合太多了,所以必须有更好/高效/更简单的方法来做到这一点。

我还看到人们使用按位运算:

const read           = 1;
const write          = 2;
const append         = 4;
const delete         = 8;
const deleteContents = 16;
const readPerm       = 32;
const changePerm     = 64;
/* shortcuts */
const fullControl    = 127; 
const noControl      = 0;

然后将它们链接到一个角色 但我听说这很难用。

所以我的问题是:

我有哪些选择,它们的优缺点是什么?

【问题讨论】:

    标签: mysql database


    【解决方案1】:

    作为一个选项,您可以创建两个表:

    表 1:用户 ID角色 ID 映射

    表 2:角色具有以下列的页面配置:页面 ID |角色 ID |查看 |删除 |创建 |编辑

    这样你就不受页数的限制了

    【讨论】:

    • 你知道吗,这实际上是一个非常好的解决方案。至少我认为。我会尝试制作表格,看看是否有意义。
    • 我同意,但是您也可以将权限从角色转移,这样您就可以添加其他权限而无需更改表。所以你有users <-> users_roles <-> roles <-> roles_permissions <-> permissions
    猜你喜欢
    • 2012-10-17
    • 2014-03-30
    • 2010-10-08
    • 1970-01-01
    • 2015-02-21
    • 2015-01-22
    • 1970-01-01
    • 2012-04-20
    • 2012-03-26
    相关资源
    最近更新 更多