1 前言
vue3 + springboot3前后端分离管理系统模版。
项目地址:ywz-manage: 游王子og管理系统通用模版
2 整体介绍
2.1 项目所用架构
本系统使用jdk8、springboot2.5、mysql8、Redis构成,运行此项目请保证相应版本能够对应并且redis和mysql处于可连接状态。配置可以在application-dev.yml中进行配置。
2.2 目录结构
2.2.1 java包
用于存放java代码,总体分为common、framework、project三大目录。
- common:通用类包,主要存放项目中所使用的工具类。
- framework:项目框架包,主要存放项目框架所涉及的类。
- project:项目业务包,根据项目实际的需求所涉及的类请放入该目录下。
2.2.2 resources包
项目资源目录,存放mapper文件以及application.yml文件。
- application.yml通用配置,根据spring:profiles:active: 来确定具体调用哪个配置。
- application-dev.yml本地环境配置,里面提供了所需的配置案例。
- application-pro.yml线上生产环境配置,根据实际的需求进行配置。
- application-dev.yml线上测试环境配置,根据实际的需求进行配置。
2.2.3 test包
测试目录,开发时碰到需要测试的类和方法,请在该目录下进行测试。
2.3 准备sql
项目中已经实现的用户表、角色表、权限表、菜单表、登录日志表、操作日志表、中国地区表相关的controller、service以及mapper的创建,所以需要在自己的数据库中创建相应的表结构。sql语句代码请查看这篇文章:企业项目中常用的表结构设计_项目表结构设计-CSDN博客
3 项目框架
3.1 jwt
项目中使用jwt技术来作为Web应用中的令牌。在访问需要权限才能访问的接口时,需要在请求头中携带token才能通过。详细的技术文章请查看:Springboot与JWT_springboot jwt-CSDN博客
在common目录下已添加JWT工具类,里面包含创建JWT令牌以及获取令牌中信息的方法。
3.2 springsecurity
项目中使用spring security作为Web 应用安全性的完整解决方案。在framework.security目录下存放相应的配置文件。
- SecurityConfig:配置类,加密方式、认证管理器、过滤器等相关配置。
- CustomUser:SpringSecurity用户实体类。
- JwtAuthenticationTokenFilter:SpringSecurity与Jwt整合拦截器。
- UserDetailsServiceImpl:用户核心认证类,其中loadUserByUserName为核心认证方法。
- AccessDeniedHandlerImpl:授权失败处理类。
- AuthenticationEntryPointImpl:认证失败处理类。
详细的技术请查看:Springboot与SpringSecurity使用(1):介绍、登录验证_springboot security-CSDN博客、Springboot与SpringSecurity使用(2):授权、自定义异常处理
3.3 mybatisplus
项目中使用mybatisplus主流数据库操作框架。在common包下提供CodeGenerator类可以根据表生成对应的java文件。具体请查看文章:mybatis plus generator代码生成器
在framework.mybatisplus目录下添加配置类解决使用IPage进行分页查询出现无法统计总条数问题。
3.4 redis
使用redis作为项目中主要的缓存工具。具体使用方式请查看文章:Spring Boot 中 Redis 的使用
3.5 Swagger3
项目中使用Swagger3作为接口文档,具体的使用方式请查看文章:Springboot与swagger_spring boot swagger-CSDN博客
3.6 aspectj
aspectj目录存放了项目中需要的AOP切面,里面已经包含了操作日志切面类。
4 项目提供的工具类
为了便于开发项目中提供了可以简化代码的工具类。
4.1 EasyPoiUtil
封装了EasyPoi导入、导出Excel方法。具体使用方式请查看文章:Springboot与easypoi_easypoi-spring-boot-starter-CSDN博客
4.2 ResultResp
通用响应结果类,为Controller层设计统一的相应结构。
4.3 StringUtils
字符串工具类,包含了项目中常用的字符串处理方法,也包含了一些其他不是字符串操作的方法。具体使用方式请查看:字符串工具类-CSDN博客
4.4 TreeListUtils
树型集合处理类,提供了将集合转成树型结构、和将树型结构转成普通集合的方法。具体使用方法请查看:企业项目中树型集合工具类-CSDN博客
4.5 NumberUtils
数字工具类,提供了与数字相关的方法,比如单位转换、利率计算等方法。具体使用方法请查看:数字工具类-CSDN博客
4.6 FileUtils
文件工具类,提供了文件类型校验,上传下载等方法。具体使用方法请查看:文件工具类-CSDN博客
5 项目功能概述
5.1 登录认证
5.1.1验证码
当系统需要使用验证码验证时,可以开启application.yml中的验证码开关。
通过/system/captcha获取验证码以及识别码,验证码的有效期为2分钟。
识别码在header中。
登录时需要传递识别码和验证码进行验证。
5.1.2 登录功能
系统中提供了基础登录逻辑,包含同一账号连续5次登录失败后将限制一段时间登录功能。登录成功后获取用户角色信息功能、登录成功后记录登录日志功能。
5.1.3 统一门户中心认证管理器
如果系统需要走门户中心进行认证,可以通过开启门户中心开关走SSO认证管理器。
当开启后登录会走SSOAuthenticationManager,请根据实际的门户中心认证流程修改里面内容。
5.2 系统管理
5.2.1 菜单管理
此为核心模块建议只允许管理员访问。菜单模块用于管理菜单信息,包括菜单的增删改查等操作。菜单分为两级,一级菜单和二级菜单。
- 菜单可以进行拖动调整菜单顺序,也可以设置菜单图标。
- 菜单地址为vue路由地址,新的组件需要添加路由需要在此处添加。例如:/home/index
5.2.2 权限管理
此模块用于管理角色权限信息,与菜单分离可以做到更细致化的权限管理。用户登录时,会根据用户的角色查询出对应的权限。然后根据权限绑定的菜单进行菜单的显示。
- 查询当前系统中的所有权限
- 可以添加编辑相应的权限与菜单进行关联。
- 可以删除权限。
5.2.3 角色管理
此模块用于管理角色信息,包括角色的增删改查等操作。角色与权限关联,一个角色可以关联多个权限。
- 查询当前系统中的所有角色
- 可以添加编辑相应的角色与权限进行关联。
- 可以删除角色。
5.2.4 部门管理
此模块用于管理部门信息,包括部门的增删改查等操作。
- 查询当前系统中的所有部门
- 可以添加编辑相应的部门。
- 可以删除部门。
5.2.5 用户管理
此模块用于管理用户信息,包括用户的增删改查等操作。用户与角色关联,一个用户可以关联多个角色。
- 查询当前系统中的所有用户
- 可以添加编辑相应的用户与角色进行关联。
- 可以删除用户。
5.2.6 标签管理
此模块用于管理标签信息,包括标签的增删改查等操作。
- 查询当前系统中的所有标签。
- 可以添加编辑相应的标签。
- 可以删除标签。
5.2.7 日志管理
此模块用于管理标签信息,包括标签的增删改查等操作。
- 查询当前系统中的所有标签。
- 可以添加编辑相应的标签。
- 可以删除标签。