CAS 权限管理
模块定位
管理系统的资源信息,用户信息,及权限信息。打造一个通用的资源权限管理体系。
名词解释
- 资源:将整个系统的每一个菜单,每一个按钮,都抽象成一个对象,这个对象就叫资源。
- 资源树:将所有资源类比成一棵树。树有 根/杆/枝/叶,类比资源的结构,叫资源权。资源树表明了资源之间的关系。
- 角色:类比电影中的角色,一个角色可以有很多资源。同一个角色可以由一个人担任,也可以由多个人担任。角色也可以认为是岗位。
- 角色树:所有角色的关联关系,类比资源树。
- 用户:在电影中,一个用户(演员),是一个真实的存在,可以只演一个角色,也可以演多个角色。
- RBAC 权限模型:基于角色的权限控制模型。下面重点详解
权限模型设计
这里的权限模型设计,只包含 RBAC 关键设计。附属设计将在后面具体功能再做说明
表设计
- 用户表 cas_user, 包含用户的基本信息。一条数据代表一个用户
- 角色表 cas_role, 记录所有角色信息。角色也可以看做是岗位
- 资源表 cas_resource, 将整个系统的所有菜单,按钮抽象出来的资源信息。包含父子关联关系,可以用父子关联关系还原成一个资源树
- 用户-角色 关联表 cas_user_role, 记录用户所拥有的角色
- 角色-资源 关联表 cas_role_resource, 记录 角色与资源的关联关系
功能设计
功能菜单
- 用户管理
- 用户
- 用户增禁改查
- 用户详情查询【cas_user, cas_user_auth 相关非敏感信息,积分等信息】
- 用户登录账号
- 用户登录账号增删改查【包含账号的所有操作】
- 用户角色增删查
- 用户的资源查询
- 用户关联租户查询
- 用户
- 角色管理
- 角色维护
- 角色的增删改查
- 角色的关联资源增删查
- 角色的关联用户增删查
- 角色维护
- 资源管理
- 资源维护
- 菜单树展示
- 节点的增删改查
- 资源节点拖动
- 节点关联接口
- 节点删除接口关联
- 节点已授权的角色
- 节点授权到角色 从角色内移除节点
- 节点已授权的用户
- 系统接口【系统在启动后自动扫描。不可手动维护】
- 查询
- 删除
- 资源维护
跨域登录传递
- 行业解决方案:登录与登出动作, 都跳转到单点登录进行,在单点登录页面授权到各系统。
- 若项目不够大,需要使用单点登录方案进行,需要对登录页面独立维护,将增加工作量,故设计出以下单体项目方案:
- 前部使用统一方法处理在各域名之间的跳转
- 前端在做地址跳转前,请求后端,获取临时 token (有效次数只有一次,且有效期只有1分钟)
- 前端将临时 token 带到 url上,进行跳转
- 在跳转后,用临时token 向服务器请求,获取正式 token (此时服务器的临时token 会销毁)
- 将正式 token 保存至 localStorage, 并移除 url 上的临时 token