权限增加缓存设计

2022-03-26  本文已影响0人  有梦想的虫子_2018

RBAC 是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。
这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。

1、权限核心-用户角色资源

权限核心.png

菜单采用树形结构展示给前端

角色与用户多对多

角色与菜单(资源)多对多

菜单、接口、页面等资源进行平台的划分,角色进行系统的划分

2、获取资源流程

2.1从数据库中获取菜单

以往都是用户登录完成后,通过权限中心提供一个获取菜单树的接口,直接从数据库中获取。

数据库中获取数据.png

2.2从缓存中获取资源

权限不足403, 具体的返回码需要与前端约定

缓存中获取数据.png

3、缓存

角色对应的资源缓存

类型 redis数据结构 key value
菜单 string systemId:roleId:menu:platformId 菜单列表
接口 set systemId:roleId:api:platformId 路径 /api/user/info
页面 set systemId:roleId:page:platformId 页面

用户对应的资源缓存

类型 redis数据结构 key value
菜单 string menu:token 菜单树
接口 set api:token 路径 /api/user/info
页面 set page:token 页面

4、添加资源

增加资源后,为角色分配资源时,保存数据库后,需要更新角色在redis中对应的缓存


添加资源.png

5、切换商户

切换商户,更新对应token的资源缓存,token的资源缓存,根据role的资源缓存生成。

切换商户.png

6、接口获取

根据swagger,获取所有的接口,进行进口权限的分配


分配接口权限.png
上一篇下一篇

猜你喜欢

热点阅读