权限增加缓存设计

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容