笔者入职新公司后,被安排参与开发一个后台管理的web站点,作用是针对组里的主系统进行各种运营及配置操作。由于笔者还不了解主系统的业务,所以负责开发后台管理系统的权限管理模块。
功能需求:
权限都以角色的方式配置;
角色显示的菜单可以配置;
允许角色请求的url可以配置;
用户请求重要url时,要保留请求记录(包含请求参数);
管理员可以显示全部菜单、请求全部url。
系统使用公司提供的sso实现登录,用户的身份选取sso接口获取到的公司邮箱地址作为标识。
用户-角色:用户与角色的对应关系(一个用户只能有一种角色)。
角色:角色的简单描述。
菜单:菜单的简单描述及入口url(菜单显示时,条目按“分组序号”排序)。
url:url的简单描述,及标记是否保存请求记录。
用户操作记录:标记为保存请求记录的url,被post请求时,记录用户及请求入参。
角色-url、角色-菜单:角色分配的菜单、url。
登陆、权限校验,通过两个拦截器实现。
权限相关的数据统一维护在内存中,修改时统一更新(若web采用集群方式部署,需要使用zk通知更新)。
系统的界面使用LigerUI实现,部分功能效果图: