小编Har*_*ari的帖子

管理Web应用程序权限的最佳方法是什么 - 位掩码或数据库表?

我正在考虑为"管理"Web应用程序设计权限系统的最佳方法.该应用程序可能有许多用户,每个用户都可以被分配一定的角色; 可以允许其中一些用户执行角色之外的特定任务.

我可以想到两种设计方法:一种是"权限"表,每个用户都有一行,布尔列,每个任务一个,为他们分配执行这些任务的权限.像这样:

User ID          Manage Users     Manage Products     Manage Promotions     Manage Orders
1                true             true                true                  true
2                false            true                true                  true
3                false            false               false                 true

我想到的另一种方法是使用位掩码来存储这些用户权限.对于32位有符号整数,这会将可管理的任务数限制为31,但实际上我们不可能有超过31个用户可以执行的特定任务.这样,数据库模式就会更简单,每次添加需要访问控制的新任务时,我们都不必更改表结构.像这样:

User ID          Permissions (8-bit mask), would be ints in table
1                00001111
2                00000111
3                00000001

人们通常使用什么机制,为什么?

谢谢!

permissions database-design web-applications

52
推荐指数
4
解决办法
4万
查看次数