Role-Based-Access-Control System Design.
比较常见的基于角色的访问控制系统,这次是主要了解和简单设计,不涉及到特别复杂的功能。
介绍
参考文档:https://blog.csdn.net/yangwenxue_admin/article/details/73936803
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。
其主要特点如下:
一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。
这种模型中,用户与角色之间,角色与权限之间,一般是多对多的关系。
在此基础上,可以扩展出用户组等实体类型。
根据实际需求,可以考虑增加用户组,并对具体权限的类型进行了细分。
角色
角色是什么?可以理解为一定数量的权限的集合,权限的载体。例如:一个论坛系统,“超级管理员”、“版主”都是角色。版主可管理版内的帖子、可管理版内的用户等,这些是权限。要给某个用户授予这些权限,不需要直接将权限授予用户,可将“版主”这个角色赋予该用户。
用户组
当用户的数量非常大时,要给系统每个用户逐一授权(授角色),是件非常烦琐的事情。这时,就需要给用户分组,每个用户组内有多个用户。
除了可给用户授权外,还可以给用户组授权。这样一来,用户拥有的所有权限,就是用户个人拥有的权限与该用户所在用户组拥有的权限之和。
权限类型
权限细分出“权限类型”,我们根据它的取值来区分是哪一类权限,进而与特定的表进行关联。如“MENU”表示菜单的访问权限、“RESOURCE”表示可供访问的URL、“FILE”表示文件的修改权限等。
这样设计的好处有二:
- 不需要区分哪些是权限操作,哪些是资源,(实际上,有时候也不好区分,如菜单,把它理解为资源呢还是功能模块权限呢?)。
- 方便扩展,当系统要对新的内容或实体进行权限控制时,我只需要建立一个新的关联表“权限XX关联表”,并确定这类权限的权限类型字符串。