文章目录
六 RBAC 模型、AJAX
分支: git checkout -b 6.0.0_rbac_ajax
1. RBAC
1.1 RBAC 简介
1.1.1 Why? 为什么要进行权限控制
- 如果没有权限控制, 系统的功能完全不设防, 全部暴露在所有用户面前, 用户登录以后可以使用系统中所有功能, 这是实际运行中不能接收的
- 所以权限控制系统的目标就是管理一航局行为, 保护系统功能
1.1.2 Waht? 什么是权限控制
- “权限” = “权利” + “限制”
1.1.3 How? 如何进行权限控制
1.1.3.1 定义资源
- 资源就是系统中需要保护起来的功能, 具体形式很多: URL 地址、handler 方法、service 方法, 页面元素等等都可以定义为资源使用权限控制保护起来
1.1.3.2 创建权限
- 一个功能复杂的项目会包含很多具体资源, 成千上万都有可能, 这么多资源逐个进行操作太麻烦了, 为了简化操作, 可以将相关的几个资源封装到一起, 打包成一个 "权限“同时分配给有需要的人
1.1.3.3 创建角色
- 对于一个庞大的系统来说, 一方面需要保护的资源非常多, 另一方面操作系统的人也非常多, 把资源打包为权限是对操作的简化, 同样把用户划分为不同角色也是对操作的简化, 否则直接对一个个用户进行管理就会很繁琐
- 所以角色就是用户的分组、父类。先把角色分配权限, 然后再把角色分配给用户, 用户以这个角色的身份操作系统就享有角色对应的权限了
1.1.3.4 管理用户
- 系统中的用户其实是人操作系统时来登录系统的账户、密码
1.1.3.5 建立关联关系
- 权限 -> 资源: 单向多对多
- 角色 -> 权限: 单向多对多
- 用户 -> 角色: 双向多对多
1.2. RBAC 权限模型
1.2.1 概念
- 鉴定权限控制的核心是用户通过角色与权限进行关联, 所以前面描述的权限控制系统可以提炼为一个模型: RBAC(Role-Base Access Control, 基于角色的访问控制)
- 在 RBAC 模型中, 一个用户可以对应多个角色, 一个角色拥有多个权限, 权限具体定义用户可以做哪些事情
1.2.2 RBAC0~RBAC3
1.2.2.1 RBAC0
- 最基本的 RBAC 模型, RBAC 模型的核心部分, 后面是那种升级版 RBAC 模型也都是建立在 RBAC 的基础上
1.2.2.2 RBAC1
- 在 RBAC0 的基础上增加了角色之间的继承关系, 角色 A 继承角色 B 之后将具备 B 的权限在增加自己独有的其他权限, 比如: 付费会员角色基础普通会员角色, 那么付费会员除了普通会员的权限外还具备浏览付费内容的其他权限
1.2.2.3 RBAC2
-
在 RBAC0 的基础上进一步增加了角色责任分离关系, 责任分离关系包含静态责任分离和动态责任分离两部分
-
- 静态责任分离: 给用户分配角色是生效
-
-
- 互斥角色: 权限上和互相制约的两个或多个角色就是互斥角色, 用户只能被分配到一组互斥角色中的一个角色。
-
-
-
-
- 例如: 一个用户不能既有会计师角色又有审计师角色
-
-
-
-
- 基数约束:
-
-
-