权限系统设计汇总

可能是史上最全的权限系统设计

权限系统设计模型分析(DAC,MAC,RBAC,ABAC)

有赞权限系统(SAM)

用户管理系统 – 用户权限设计从入门到精通

B端产品如何设计权限系统?4个要素,5个模型,2个行业案例

基于RBAC模型的权限系统设计(github开源项目)

权限模型

基于角色的访问控制(RBAC: Role-Based Access Control)

RBAC0模型

最简单常用的模型

RBAC1模型

RBAC2模型

基于核心模型的基础上,进行了角色的约束控制,RBAC2模型中添加了责任分离关系,其规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分离和动态责任分离。主要包括以下约束:

  • 互斥角色: 同一用户只能分配到一组互斥角色集合中至多一个角色,支持责任分离的原则。互斥角色是指各自权限互相制约的两个角色。比如财务部有会计和审核员两个角色,他们是互斥角色,那么用户不能同时拥有这两个角色,体现了职责分离原则
  • 基数约束: 一个角色被分配的用户数量受限;一个用户可拥有的角色数目受限;同样一个角色对应的访问权限数目也应受限,以控制高级权限在系统中的分配
  • 先决条件角色: 即用户想获得某上级角色,必须先获得其下一级的角色
rbac2

RBAC3模型

即最全面的权限管理,它是基于RBAC0,将RBAC1和RBAC2进行了整合

rbac3

基于属性的权限验证(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 是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型,支持多种语言

laravel-authz  think-authz 

文档

laravel-admin

文档

dcat-admin

文档