权限模型
基于角色的访问控制(RBAC: Role-Based Access Control)
RBAC0模型
最简单常用的模型
RBAC1模型
RBAC2模型
基于核心模型的基础上,进行了角色的约束控制,RBAC2模型中添加了责任分离关系,其规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分离和动态责任分离。主要包括以下约束:
- 互斥角色: 同一用户只能分配到一组互斥角色集合中至多一个角色,支持责任分离的原则。互斥角色是指各自权限互相制约的两个角色。比如财务部有会计和审核员两个角色,他们是互斥角色,那么用户不能同时拥有这两个角色,体现了职责分离原则
- 基数约束: 一个角色被分配的用户数量受限;一个用户可拥有的角色数目受限;同样一个角色对应的访问权限数目也应受限,以控制高级权限在系统中的分配
- 先决条件角色: 即用户想获得某上级角色,必须先获得其下一级的角色
RBAC3模型
即最全面的权限管理,它是基于RBAC0,将RBAC1和RBAC2进行了整合
基于属性的权限验证(ABAC: Attribute-Based Access Control)
自主访问控制(DAC: Discretionary Access Control)
强制访问控制(MAC: Mandatory Access Control)
PHP生态中成熟的权限工具包
laravel-permission
相关文章
[扩展推荐] spatie/Laravel-permission Laravel 应用中的角色和权限控制
php-casbin 分享会-访问控制框架Casbin(社区版)本.pdf
Casbin 是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型,支持多种语言