我想知道最好的方法以及使用多少个表来处理我的应用程序的权限。
我想授予用户访问以下任一权限的权限:
我已经有一个用于项目的表,一个用于用户的表和一个用于客户的表。
您是否会创建3个新的权限表,例如“ Permission_Project”,“ Permission_Client”和“ Permission_All”还是组合表?
谢谢
答案 0 :(得分:0)
最好先与您的用户创建一个表。例如,表包含以下列:
UserID
Login
FirstName
LastName
...
然后使用以下几列创建带有安全组的表:
SecurityGroupID SecurityGroupName 安全组说明 ...
然后,在权限表中,您可以存储例如每个安全组可见的项目和客户端。例如:
ProjectID SecurityGroupID
100 10001
100 10002
...
表示项目ID 100
由组10001
和10002
和
ClientID SecrutiyGroupID
1001 10001
...
表示ID 1001
的客户端在组10001
中可见。最后,您需要的表是用户-安全组关联:
UserID SecurityGroupID
因此,您需要创建两个接口:
为了简化表的使用,通常使用输入参数user id创建一个函数,该函数输出给定用户的可见客户端/项目。
此外,请考虑在权限表中添加访问类型-例如view
或deny
。因此,您可以使用查看特定项目的所有客户端的组成员,同时使拒绝该项目中的特定客户端访问的组用户。
授予包含30个客户端的项目的访问权限,然后拒绝其中一个客户端的访问,然后授予29个客户端的访问权限,则更容易。同样,与多个用户组一起工作比与许多用户一起工作更方便。例如,在您的应用程序中,您可能具有以下代码:
If member of group 'show all clients' then render this HTML
那比那更好:
if used id in (101,102,103,104...) render this HTML
比较容易,对吧?
计划,早点解决这个问题。一旦增加了应用程序代码并开始运行系统,就可能很难更改您处理安全性和权限的方式。