通用web应用的权限管理实践

笔者入职新公司后,被安排参与开发一个后台管理的web站点,作用是针对组里的主系统进行各种运营及配置操作。由于笔者还不了解主系统的业务,所以负责开发后台管理系统的权限管理模块。

通用web应用的权限管理实践_第1张图片
最终效果

功能需求:

权限都以角色的方式配置;

角色显示的菜单可以配置;

允许角色请求的url可以配置;

用户请求重要url时,要保留请求记录(包含请求参数);

管理员可以显示全部菜单、请求全部url。


通用web应用的权限管理实践_第2张图片
数据库E-R图

系统使用公司提供的sso实现登录,用户的身份选取sso接口获取到的公司邮箱地址作为标识。

用户-角色:用户与角色的对应关系(一个用户只能有一种角色)。

角色:角色的简单描述。

菜单:菜单的简单描述及入口url(菜单显示时,条目按“分组序号”排序)。

url:url的简单描述,及标记是否保存请求记录。

用户操作记录:标记为保存请求记录的url,被post请求时,记录用户及请求入参。

角色-url、角色-菜单:角色分配的菜单、url。

拦截器注解

登陆、权限校验,通过两个拦截器实现。

权限相关的数据统一维护在内存中,修改时统一更新(若web采用集群方式部署,需要使用zk通知更新)。


通用web应用的权限管理实践_第3张图片
权限校验拦截器处理流程

系统的界面使用LigerUI实现,部分功能效果图:


通用web应用的权限管理实践_第4张图片
用户-角色
通用web应用的权限管理实践_第5张图片
角色
通用web应用的权限管理实践_第6张图片
角色-url
通用web应用的权限管理实践_第7张图片
角色-菜单
通用web应用的权限管理实践_第8张图片
操作记录

你可能感兴趣的:(通用web应用的权限管理实践)