超管用户问题解决方案
一、背景
后台系统中需要权限管控模块交互,在用户上线时,如何识别用户身份以及通过权限校验在系统中进行交互操作,比如创建权限、角色、分配角色成员等等。
二、需求
系统上线之后,有超管用户能去操作系统,无需鉴权才能交互。
三、方案
1、硬编码超管用户
直接在代码里定义超管用户工号,判断登录账号工号,忽略鉴权直接进行交互
优点:简单粗暴,直接在代码里管理超管用户列表
缺陷: 用户离职或者调岗等场景会导致超管用户列表失效,无有效超管用户
2、无需鉴权链接
通过特殊路径登录访问时,忽略鉴权,可以直接进行交互
优点:无需硬编码管理超管用户列表,通过链接参数跳过鉴权
缺陷:需要通过特殊路径访问才可以无需鉴权,不存在超管用户,不可配置路径参数的场景下无法解决超管问题,由于不存在超管用户,导致链接失效后,无超管用户。同时存在
3、本地数据直接赋予超管身份
修改本地浏览器缓存数据,修改sessionStorage 或localStorage的值来直接赋予用户权限
优点: 无需硬编码管理用户列表,直接在前端数据中赋予权限
缺陷:清除本地数据之后用户会丢失超管身份,权限数据需要能在本地读取并修改
以上三个方案都是只能在前端做权限鉴权,后端没有做权限鉴权的场景下生效
4、后端提供超级管理员用户识别api
超管用户维护在后端,不在前端明码出现,需要维护超管用户列表
5、直接修改数据库数据
修改数据库直接赋予用户超管身份