我想知道处理应用程序权限的最佳方式以及使用多少表。
我想让用户访问其中一个:
- 单个项目
- 某个客户的所有项目
- 所有项目
我已经有了一个项目表、一个用户表和一个客户端表。
您会创建3个新的权限表,例如"Permission_Project"、"Permission_Client"one_answers"Permission_All",还是创建一个组合表?
谢谢
最好先与用户一起创建一个表。例如,包含以下列的表:
UserID
Login
FirstName
LastName
...
然后创建一个包含安全组的表,其中包含以下列:
安全组ID安全组名称SecurityGroupDescription…
然后,在权限表中,可以存储例如每个安全组可见的项目和客户端。例如:
ProjectID SecurityGroupID
100 10001
100 10002
...
意味着项目ID100
由组10001
、10002
和可见
ClientID SecrutiyGroupID
1001 10001
...
意味着ID为CCD_ 4的客户端对于组CCD_。您需要的最后一个表是用户-安全组关联:
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
这更容易,对吧?
计划好了,在结束之前。一旦增加了应用程序代码并且系统开始工作,就可能很难更改处理安全性和权限的方式。