该项目的核心是提供一套通用的、精细化的权限管理解决方案,适用于各类后台管理系统。主要功能包括:
按钮级别权限控制:前端根据用户权限,动态显示/隐藏页面上的新增、编辑、删除等按钮。
接口级别权限控制:后端接口通过权限注解(如 @RequiresPermissions("article:add"))进行强制校验,防止越权操作。
动态菜单路由:前端根据后端返回的权限菜单列表,动态生成可访问的路由和侧边栏菜单。
用户与角色管理:提供基础的示例功能,支持管理员登录后创建用户、分配角色。
角色权限分配:角色可以关联多条具体权限,用于简化用户的权限分配管理。
其独特设计在于:后端权限验证与“角色”解耦,只关注用户是否拥有具体权限(如 article:add),而不是用户是不是管理员。这使得权限控制更灵活、实现更简单。
项目实现
后端实现要点:
新版本:已移除 Shiro 依赖,通过自定义注解 + AOP 拦截实现权限验证,简化配置并增强拓展性。
核心逻辑:在需要权限的接口方法上添加自定义注解(如 @RequiresPermission),由 AOP 切面拦截该方法,从当前登录用户的权限列表中检查是否包含注解指定的权限。
登录凭证:使用 Token 代替 Session,解决前后端分离的跨域认证问题。
前端实现要点:
项目模板:基于 vueAdmin-template 脚手架搭建。
动态路由:登录成功后,前端接收后端返回的 menuList(菜单列表),据此动态生成和添加可访问的路由。
按钮控制:接收 permissionList(权限列表),在页面组件中通过自定义指令或方法判断,控制按钮元素的渲染。
数据库设计关键:
必须有一张存储系统全部权限明细的表(如 permission),作为权限分配和验证的总清单。
示例中通过 user、role、permission 以及关联表来存储用户、角色和权限的分配关系。
项目结构:
/back 文件夹:Spring Boot 后端代码。
/vue 文件夹:Vue 前端代码,启动命令为 npm install 和 npm run dev。