- 💎 优雅美观:基于 Spring Boot 体系精心设计
- 🚀 最新技术栈:使用 Spring Boot,Shiro,MyBatis 等前沿和成熟的技术开发
- 🔐 安全认证:基于 token 认证,实现按钮级别的权限认证
- ⚙️ 最佳实践:良好的工程实践助您持续产出高质量代码
- ✌️ 快速高效:前后端分离,专注后端,快速实现 restful 接口定义
amy
├── logs -- 日志目录
├── src/main/java/cn.mypandora.springboot
| ├── config -- 通用配置
| | ├── exception -- restful 接口异常信息配置目录
| | ├── filter -- filter配置目录
| | ├── redis -- redis配置目录
| | ├── shiro -- shiro配置目录
| | ├── swagger -- swagger配置目录
| | ├── validate -- validate配置目录
| | ├── webmvc -- mvc配置目录
| | └── websocket -- websocket配置目录
| ├── core -- 通用核心代码
| | ├── base -- 通用Mapper和分页类
| | ├── converter -- 格式转换器
| | ├── enums -- 自定义枚举类
| | ├── exception -- 异常信息封装类
| | ├── listener -- websocket监听类
| | ├── shiro -- shiro扩展配置
| | ├── support -- XSS 过滤
| | └── utils -- 工具类
| | └── validate -- 自定义校验组
| ├── modular -- 业务模块
| | ├── system -- 通用后台管理代码目录
| | └── your -- 放置你自己的业务代码
└── src/main/resources
├── i18n -- 国际化目录
├── mybatis -- Mybatis的Mapper.xml目录
| ├── mapper -- MyBatis sql语句配置目录
| └── mybatis-config -- MyBatis配置文件
├── sql -- sql脚本目录
| └── init.sql -- 初始化建表文件
├── application.yml -- 项目默认配置文件
├── application-dev.yml -- 开发环境配置文件
├── application-docker.yml -- docker环境配置文件
├── application-prod.yml -- 生产环境配置文件
├── application-test.yml -- 测试环境配置文件
└── logback-spring.xml -- 日志配置文件
[x] | 技术名 | 版本 |
---|---|---|
[x] | SpringBoot | 2.3.9 |
[x] | Redis(spring-boot-starter-data-redis) | 2.3.9 |
[x] | Mybatis(mybatis-spring-boot-starter) | 2.1.1 |
[x] | Mapper(mapper-spring-boot-starter) | 2.1.5 |
[x] | PageHelper(pagehelper-spring-boot-starter) | 1.2.13 |
[x] | Shiro | 1.7.1 |
[x] | jjwt | 0.10.7 |
[x] | jBCrypt | 0.4.1 |
[x] | jasypt-spring-boot-starter | 3.0.3 |
[x] | Swagger3 | 3.0.0 |
- 项目使用了Lombok简化代码,请安装对应的IDE插件。
- openjdk 11
- MariaDB 10.4.13
- Redis 5.0
-
下载项目
git clone https://github.com/hankaibo/amy-java.git
-
导入项目
使用自己的 IDE 导入, Intellij IDEA 社区版本即可。
-
导入数据库
安装 MySQL(MariaDB) 数据库,执行 init.sql 文件建表初始化数据;
安装 redis。
-
配置数据库
打开 application-dev.yml 修改 MySQL 和 Redis 连接信息。
-
启动项目
找到 SpringbootApplication 启动类, 启动即可。
-
启动前端项目
请参考前端项目amy-react配置。
-
POST请求【用户名/密码】到 /api/v1/login 接口进行登入,如果成功返回一个加密 token,role及resources。
token: 之后用户访问每一个需要权限的网址请求必须在 header 中添加 Authorization 字段,例如 Authorization: Bearer token。
role:方便前端处理的角色信息。
resources:用户对应的所有资源数据集合,对每个人的页面进行按钮等组件的动态显示与隐藏。
-
登录成功之后,自动发起GET请求(携带token)到 /api/v1/users/info,获取当前登录用户的信息。
user: 当前登录用户的个人信息。
-
之后单击页面相关按钮发送的请求,都会自动将 token 加入到 header 中,以保证有权限认证,可以成功请求到后台数据。
本文参考了以下项目,特此感谢。
- https://github.com/tomsun28/bootshiro
- https://jinnianshilongnian.iteye.com/blog/2049092
- https://github.com/zhaojun1998/Shiro-Action
- https://github.com/Smith-Cruise/Spring-Boot-Shiro
- https://github.com/zzycreate/spring-boot-seed
- https://github.com/stylefeng/Guns
非常感谢 Jetbrains 提供的免费授权。