Skip to content

权限基础知识

winyh edited this page Aug 27, 2020 · 12 revisions

权限是什么?

权限管理是后台系统经常会涉及的模块,主要是对不同的用户访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,账号过期,隐私数据泄露等问题。

功能划分

权限管理系统总体分为:授权与认证

  1. 授权:指将权限授予角色或用户。
  2. 认证:指用户访问资源的某些操作时,根据授权,判断是否允许用户的访问。

基础概念

权限模型

  1. 权限设计模型是RBAC模型,基于角色的访问控制(Role-Based Access Control)。抽象为Who(权限的拥用者或主体 Group,Role)对What(Which)(权限针对的对象或资源)进行How(具体的权限)的操作。构成“用户-角色-权限-资源”的授权模型。

权限名词

  1. 资源 (Resources):资源就是想要的到的最终物质。菜单、页面、按钮、API、数据等均为资源。
  2. 用户 (User):是发起操作的主体,按类型分可分为2B和2C用户,可以是后台管理系统的用户等。
  3. 角色(Role):是中间量,连接了用户和权限的关系,每个角色可以关联多个权限,同时一个用户关联多个角色,那么这个用户就有了多个角色的多个权限。使得授权操作便捷易拓展。角色不能随意删除或禁用。
  4. 权限 (Permissions):是用户可以访问的资源。
    • 页面权限:即用户登录系统可以看到的页面,由菜单来控制,菜单包括一级菜单和二级菜单,只要用户有一级和二级菜单的权限,那么用户就可以访问页面。
    • 操作权限:即页面的功能按钮,包括查看,新增,修改,删除,审核等,用户点击删除按钮时,后台会校验用户角色下的所有权限是否包含该删除权限。
    • 数据权限:即不同用户在同一页面看到的数据是不同的,比如财务部只能看到其部门下的用户数据,比如杭州分公司用户登录系统只能看到杭州的数据。(解决方案一般是把数据和具体的组织架构关联起来,举个例子,在给用户授权的时候,用户选择某个角色同时绑定组织如财务部或者合肥分公司,那么该用户就有了该角色下财务部或合肥分公司下的的数据权限)
  5. 用户组 (Group):当平台用户基数增大,角色类型增多时,管理员直接给用户组分配角色,用户组里的每个用户即可拥有该角色,而不用操作每个用户完成授权。
  6. 组织(Organization):可以把组织与角色进行关联,用户加入组织后,就会自动获得该组织的全部角色,无须管理员手动授予,同时用户在调岗时,只需调整组织,角色即可批量调整。组织的另外一个作用是控制数据权限,把角色关联到组织,那么该角色只能看到该组织下的数据权限。组织是一个集合。
  7. 职位(Post):每个组织部门下都会有多个职位,每个职位的权限是不同的。职位是针对人的个体。
  8. 菜单(Menu):用户登录系统可以看到的页面,可以有多层级。

关联关系

  1. 用户和角色是多对多的关系
  2. 角色和权限是多对多的关系

授权流程

  1. 手动授权:给用户添加角色,给角色添加用户。给用户添加角色就是在用户管理页面,点击某个用户去授予角色,可以一次为用户添加多个角色;给角色添加用户就是在角色管理页面,点击某个角色,选择多个用户,实现了给批量用户授予角色的目的。
  2. 审批授权:即用户申请某个职位角色,那么用户通过OA流程申请该角色,然后由上级审批,该用户即可拥有该角色,不需要系统管理员手动授予。

权限系统需求

  1. 系统拥有一个超级管理员,拥有系统所有权限
  2. 不同的用户在页面中可以看到的元素和操作不同
  3. 不同的用户对页面的访问权限不同
  4. 操作包括:增删改查审核等
  5. 用户拥有多个角色,那么用户的权限是这些角色权限的合集
  6. 授权操作时选中即生效,无需提交
  7. 用户(User)(帐号)可以拥有多个角色(Role),角色可以被分配给多个用户
  8. 每个用户组的管理员都具有创建角色的能力,并且自己管理这自己的角色
  9. 每个用户组的管理员都有添加用户,授予用户权限的能力
  10. 用户仅仅是纯粹的用户,用来记录用户相关信息,如用户名、密码等,权限是被分离出去了的。用户(User)要拥有对某种资源的权限,必须通过角色(Role)去关联。
  11. 角色是使用权限的基本单位,拥有一定数量的权限,通过角色赋予用户权限
  12. 权限指用户根据角色获得对程序某些功能的操作,例如对文件的读、写、修改和删除功能
  13. 账号有效期
  14. 注意区分角色和职位
  15. 给组织的总部分配账号。组织的管理员,然后自己维护下级数据

数据表

  1. 用户表(帐号)(UserInfo)(将用户的最基本的信息进行管理(在正常的业务系统中可进行扩展用户信息),比如姓名、有效期等)
  2. 角色表(RoleInfo)(对角色基本信息进行管理。用户可以自定义成各种各样的角色)
  3. 菜单表(MenuInfo)
  4. 用户角色表(UserRole)(在用户与角色之间建立起关联,给用户授予哪些角色权限(同一用户可以有多个角色),也可以按角色添加用户,比如将“员工”角色授予公司所有人,而不用按用户一个一个地授权)
  5. 角色菜单表(RoleMenu)
  6. 角色权限表 (将角色与系统中的权限点关联起来,也就是完成授权的动作)
  7. 操作表(用来存放用户自定义的各种功能操作,比如新增、修改、删除等)
  8. 页面元素表