目录
一、简单的权限管理配置
直接规定哪些用户可以使用哪些权限,实现和配置较为简单,但如要实现较为复杂的权限控制,可采取的方法有:
- 增加权限字段,如删除权限、增加权限等;
- 一个字段放置多种权限信息;
二、普通标准的权限管理配置
给每个用户配置一个角色,最常见的角色如管理员、普通用户、超级用户、会员等角色,每种角色具有同样的权限。此种权限配置是最常见的,可以在一定程度上解放用户信息表和权限表的耦合,可在另一处灵活的配置具体哪些角色拥有哪些权限。但如果这种模式要控制权限粒度的话将会变得非常困难:如精确到某个按钮的显示。因为如果要这样做,每个角色不同的权限差异要多出非常多的配置,对配置人员或管理人员不友好。利用Java编程的复用思想,可对此模型进行进一步的优化。
三、标准版的升级权限管理配置
相较于普通的权限管理,这一类插入了角色组表,用以将用户权限粒度进一步的划分。如某个有共同的登录权限,其各自分别有删除和增加的权限,则可在角色表中加入登录权限、删除权限和增加权限,当分配权限时,只需要让各自的角色组分别加入登录、删除和登录、增加的权限配置,即可完成此类权限粒度控制的需求。相较于普通版,配置人员只需要配置三个权限:登录、删除、增加,而后的权限只需要动态的分配即可,而普通的则需要配置四次,每次角色组的权限变动,或者几种角色都需要增加某一权限,都需要给每个涉及到的角色进行权限分配。此种模式为一次增加权限,后续只需要动态配置角色即可。
四、几种权限管理设计的区别
优点
- 第一种:配置方便,便于理解。无需配置太多的表即可完成简单的权限管理,适合用于一维的权限管理,如类似增删改查这些类似的。适用于对权限粒度控制要求不高的系统。
- 第二种:大部分系统如无需特殊的权限管理,一般都使用此模式。此模式在粒度恰当的情况下也能够实现动态权限分配,每次角色权限变动只需要对某一角色表增加权限表的关联即可。适用于系统角色不多,并且改动频率较少的系统。
- 第三种:可以实现较小粒度权限的分配管理,对于某一权限,只需要一次创建,后续只需要把角色分配到不同的角色组即可,同时实现了某些常用权限分配的复用。适用于用户权限经常会发生改动并且权限控制粒度较小的系统。
缺点
- 第一种:过于简单,只适用于较为简单的权限管理,权限粒度过大。
- 第二种:较为均衡,能够实现一定权限粒度的权限分配,但对于权限管理配置人员不友好,某些常用的权限如果某些角色进行变动则需要把所有涉及到的角色统一进行改动,同时增加权限时对于某一常用的权限需要多次分配。
- 第三种:配置较为麻烦,虽然在增加权限时较为简单,但是在分配角色和角色组时很容易错误分配权限,对权限管理人员对角色拥有哪些权限要求较高,也对使用此系统的权限划分规范要求较高。