Appearance
菜单与权限规则
菜单与权限系统基于经典的 RBAC 权限模型,后台 权限管理 菜单下:
- 菜单规则管理 用于管理 菜单 和细粒度的 权限节点。
- 角色组管理 中的分组用于持有 菜单 和 权限节点,且分组间可配置上下级关系。
- 每个管理员都有自己的 角色组,支持配置多个,配置则相当于该管理员拥有了对应角色组的所有 菜单 和 权限节点。
ai-go-admin 基于以上 RBAC 权限模型实现了非常强大的路由与权限系统。
- 无限子级菜单
- 前后两端双鉴权
- WEB 端路由自动注册
- WEB 端按钮级鉴权
- 更多待您自行探索
前端路由
注册一个前端路由至少需要:
- 路由名称
- 路由标题
- 路由路径
- vue 组件路径
我们通过后台的 菜单规则管理 表单,完成以上数据的收集后,前端能够自动完成路由的注册(我们称之为动态路由,通过 系统初始化请求 获取并自动注册后,即可正常访问)。
后台菜单
后台菜单基于上一点 前端路由 收集到的数据,有它们就已经足以建立好管理员的 后台菜单列表,所以菜单和前端路由的关联是自动的。
权限节点
设计非常简单,主要是两个字段:
- 节点标题
- 节点名称(以
/分割,实现任意层级的细粒度控制,如分组更新:group/update)
前端随 系统初始化请求 加载当前管理员的所有权限节点,然后查询节点名称即可确定一个按钮是否显示(src\utils\common.ts 的 auth 函数)。
权限节点最主要的功能是额外关联了 API 层面的鉴权设计,前端按钮是否显示只影响界面,而管理员若能不经授权访问某个 API 问题就大条了。
不过实现服务端鉴权是非常简单的:当管理员请求 /admin/auth/group/update/1 (编辑管理员分组接口)时,就检查他所有角色组的权限持有情况,当有个名为 auth/group/update 的权限节点时,就可以放行。
所以,API验权 和 前端按钮 验权的关联也是自动的。只需要在新增权限节点时,将它的名称取为服务端的方法名即可。
字段填写建议
- 规则名称:规则的名称应该是英文+全小写的,我们推荐直接使用
/来分隔目录层次,并使用中划线-来分割多个单词。 - 路由路径:比如您正在看的网页的路径是:
senior/menu-rule,您需要为规则设计一个路由路径,建议直接和规则名称保持一致。 - 组件路径:填写实际的组件路径即可,例如:
/src/views/admin/auth/group/index.vue,前端组件是根据路由按需加载的。 - 规则权重:数字越大,排序越靠前,系统内置的
控制台的权重为999。 - 扩展属性:可以配置只自动注册到路由或菜单,这样就可以实现:同一路由下多个菜单,比如将
auth/menu只添加为路由,那么可以另外将auth/menu、auth/menu/:a、auth/menu/:b/:c只添加为菜单。 - 缓存:开启后,将使用
keep-alive包裹标签页,实现切换标签,原标签保留状态(表单输入数据等)。
