一、权限管理模型的必要性:
a. 安全性:防止误操作,防止数据泄露,保证信息的安全。
b. 数据隔离:保持不同的角色具有不同的权限,只能看到自己权限范围内的数据
二、权限管理模型的发展:
a. 传统的权限管理:随着用户数量的增大和用户权限区别的增大,传统的权限管理需要针对每个用户依次管理,成本较高。
b. RBAC:Role-Based Access Control 用户-角色-权限,权限与角色相关联,用户与角色相关联,通过对用户赋予相应的角色,再去获取相应的权限,从而实现了用户与权限的解耦,具有很好的扩展性和通用性。
三、RBAC的三个原则:
a. 最小特权原则:即通过对每个角色赋予相应的权限,通过对每个用户赋予相应的角色,从而实现给用户分配相应的权限,保证该权限不超过该用户完成其任务所需要的权限即可。
b. 责任分离原则:指的是针对敏感任务,分配两个责任上相互制约的两个角色,比如针对财务管理员和会计。
c. 数据抽象原则:主要是通过抽象许可权来实现。比如财务上的信用等抽象许可权。
四、RBAC的数据库设计
a. 用户表
b. 角色表
c. 权限表
d. 用户角色表
e. 角色权限表
五、基于RBAC的实现流程
a. 首先针对权限的校验的业务逻辑在一个父类中实现,其余子类均需要实现该父类,从而实现针对用户的权限的控制。
b. 用户访问时,首先查询用户表判断用户的状态是否是可用。
c. 然后根据用户 id查询 用户角色表,得到用户的角色id
d. 根据角色 id 查询 权限角色表,得到该用户在该角色下的权限id
e. 根据权限 id 查询 权限表,得到该用户在该角色下的权限。
六、主流的权限管理框架
a. Spring Security
b. Apache Shiro
原文地址:https://www.cnblogs.com/Demrystv/p/11317961.html
时间: 2024-10-11 22:19:25