针对vue-pure-admin精简版进行二次开发 后端Spring Boot
感谢前端大佬 xiaoxian521
本人代码仓库
采用技术栈: Spring Boot 3.2.6 + Spring Security + MyBatis Plus + Redis + Swagger + JWT + JDK17
目前已实现 登录、动态路由、jwt、验证码、动态权限校验、用户管理模块、个人中心
数据库设计
- 用户表
- 角色表
- 菜单表
- 权限表
- 角色菜单表 1对n
- 角色权限表 1对n
- 角色用户表 1对1
初始化项目
- 创建项目
- 配置maven
- 编写工具类(BaseResponse响应类,封装了响应成功和失败。ResponseCode状态码枚举。ServletUtils 封装了响应流处理数据)
- 抽取出有共同字段的属性 BaseEntity(创建时间、创建人、更新时间、更新人)
- 配置MySQL
- 使用MybatisX生成代码
- 配置MybatisPlus
登录
- 引入相关依赖
- 配置跨域请求WebMvcConfig
- 配置SpringSecurity
- 配置自定义登录成功(LoginSuccessHandler)
- 配置自定义登录失败(LoginFailureHandler)
封装JWT拦截器
- 引入相关依赖
- 在application.yml中配置token信息 方便管理
- 封装JWT拦截器 JwtAuthenticationTokenFilter
- 封装JWT工具类 JwtUtil 生成和解析token
- 自定义JwtAuthentication用于解析token中获取到的用户信息 (Authentication及其实现类的大部分属性没有提供setter方法)
- 添加拦截器到SpringSecurity配置类中,拦截器拦截到请求,判断是否登录,未登录则拦截,登录则放行(放在UsernamePasswordAuthenticationFilter前面)
验证码拦截器
- 引入相关依赖
- 封装验证码生成工具(放在通用工具类中)
- 封装常量池存放验证码需要的数据(位数、长度、宽度)
- 封装验证码拦截器 VerifyCodeFilter
- 添加拦截器到SpringSecurity配置类中,拦截器拦截到请求,判断是否登录,未登录则拦截,登录则放行(放在UsernamePasswordAuthenticationFilter前面)
配置Redis
- 引入相关依赖
- 配置端口等信息
- 自定义Redis配置类
- 封装RedisCache
异常处理
- BaseException 自定义异常类
- globalException 全局异常处理类
- NoAuthenticationEntryPoint Security异常处理类