Skip to content

CAS 权限管理

模块定位

管理系统的资源信息,用户信息,及权限信息。打造一个通用的资源权限管理体系。

名词解释

  • 资源:将整个系统的每一个菜单,每一个按钮,都抽象成一个对象,这个对象就叫资源。
  • 资源树:将所有资源类比成一棵树。树有 根/杆/枝/叶,类比资源的结构,叫资源权。资源树表明了资源之间的关系。
  • 角色:类比电影中的角色,一个角色可以有很多资源。同一个角色可以由一个人担任,也可以由多个人担任。角色也可以认为是岗位。
  • 角色树:所有角色的关联关系,类比资源树。
  • 用户:在电影中,一个用户(演员),是一个真实的存在,可以只演一个角色,也可以演多个角色。
  • RBAC 权限模型:基于角色的权限控制模型。下面重点详解

权限模型设计

这里的权限模型设计,只包含 RBAC 关键设计。附属设计将在后面具体功能再做说明

表设计

  • 用户表 cas_user, 包含用户的基本信息。一条数据代表一个用户
  • 角色表 cas_role, 记录所有角色信息。角色也可以看做是岗位
  • 资源表 cas_resource, 将整个系统的所有菜单,按钮抽象出来的资源信息。包含父子关联关系,可以用父子关联关系还原成一个资源树
  • 用户-角色 关联表 cas_user_role, 记录用户所拥有的角色
  • 角色-资源 关联表 cas_role_resource, 记录 角色与资源的关联关系

功能设计

功能菜单

  • 用户管理
    • 用户
      • 用户增禁改查
      • 用户详情查询【cas_user, cas_user_auth 相关非敏感信息,积分等信息】
      • 用户登录账号
      • 用户登录账号增删改查【包含账号的所有操作】
      • 用户角色增删查
      • 用户的资源查询
      • 用户关联租户查询
  • 角色管理
    • 角色维护
      • 角色的增删改查
      • 角色的关联资源增删查
      • 角色的关联用户增删查
  • 资源管理
    • 资源维护
      • 菜单树展示
      • 节点的增删改查
      • 资源节点拖动
      • 节点关联接口
        • 节点删除接口关联
      • 节点已授权的角色
      • 节点授权到角色 从角色内移除节点
      • 节点已授权的用户
    • 系统接口【系统在启动后自动扫描。不可手动维护】
      • 查询
      • 删除

跨域登录传递

  • 行业解决方案:登录与登出动作, 都跳转到单点登录进行,在单点登录页面授权到各系统。
  • 若项目不够大,需要使用单点登录方案进行,需要对登录页面独立维护,将增加工作量,故设计出以下单体项目方案:
    1. 前部使用统一方法处理在各域名之间的跳转
    2. 前端在做地址跳转前,请求后端,获取临时 token (有效次数只有一次,且有效期只有1分钟)
    3. 前端将临时 token 带到 url上,进行跳转
    4. 在跳转后,用临时token 向服务器请求,获取正式 token (此时服务器的临时token 会销毁)
    5. 将正式 token 保存至 localStorage, 并移除 url 上的临时 token

Released under the MIT License.