Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hankaibo/amy-java
一个简洁的后台管理系统后台代码。
https://github.com/hankaibo/amy-java
jwt lombok mapper mybatis pagehelper redis shiro spring spring-boot swagger2 websocket
Last synced: 1 day ago
JSON representation
一个简洁的后台管理系统后台代码。
- Host: GitHub
- URL: https://github.com/hankaibo/amy-java
- Owner: hankaibo
- License: mit
- Created: 2019-01-10T14:25:54.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-07-25T14:00:42.000Z (over 1 year ago)
- Last Synced: 2023-08-13T08:21:34.808Z (over 1 year ago)
- Topics: jwt, lombok, mapper, mybatis, pagehelper, redis, shiro, spring, spring-boot, swagger2, websocket
- Language: Java
- Homepage: http://47.95.120.23:9000
- Size: 1.05 MB
- Stars: 10
- Watchers: 1
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
后端脚手架
## 项目特性
- :gem: **优雅美观**:基于 Spring Boot 体系精心设计
- :rocket: **最新技术栈**:使用 Spring Boot,Shiro,MyBatis 等前沿和成熟的技术开发
- :closed_lock_with_key: **安全认证**:基于 token 认证,实现按钮级别的权限认证
- :gear: **最佳实践**:良好的工程实践助您持续产出高质量代码
- :v: **快速高效**:前后端分离,专注后端,快速实现 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## 使用说明
1. 项目使用了Lombok简化代码,请安装对应的IDE插件。
## 开发环境
1. openjdk 11
2. MariaDB 10.4.13
3. Redis 5.0## 快速开始
1. 下载项目
```
git clone https://github.com/hankaibo/amy-java.git
```2. 导入项目
使用自己的 IDE 导入, Intellij IDEA 社区版本即可。
3. 导入数据库
安装 MySQL(MariaDB) 数据库,执行 init.sql 文件建表初始化数据;
安装 redis。
4. 配置数据库
打开 application-dev.yml 修改 MySQL 和 Redis 连接信息。
5. 启动项目
找到 SpringbootApplication 启动类, 启动即可。
6. 启动前端项目
请参考前端项目[amy-react](https://github.com/hankaibo/amy-react)配置。
## 逻辑
1. POST请求【用户名/密码】到 /api/v1/login 接口进行登入,如果成功返回一个加密 token,role及resources。
token: 之后用户访问每一个需要权限的网址请求必须在 header 中添加 Authorization 字段,例如 Authorization: Bearer token。
role:方便前端处理的角色信息。
resources:用户对应的所有资源数据集合,对每个人的页面进行按钮等组件的动态显示与隐藏。
2. 登录成功之后,自动发起GET请求(携带token)到 /api/v1/users/info,获取当前登录用户的信息。user: 当前登录用户的个人信息。
3. 之后单击页面相关按钮发送的请求,都会自动将 token 加入到 header 中,以保证有权限认证,可以成功请求到后台数据。
![Image text](./image/jwt.png)
## 参考
本文参考了以下项目,特此感谢。
1. [https://github.com/tomsun28/bootshiro](https://github.com/tomsun28/bootshiro)
2. [https://jinnianshilongnian.iteye.com/blog/2049092](https://jinnianshilongnian.iteye.com/blog/2049092)
3. [https://github.com/zhaojun1998/Shiro-Action](https://github.com/zhaojun1998/Shiro-Action)
4. [https://github.com/Smith-Cruise/Spring-Boot-Shiro](https://github.com/Smith-Cruise/Spring-Boot-Shiro)
5. [https://github.com/zzycreate/spring-boot-seed](https://github.com/zzycreate/spring-boot-seed)
6. [https://github.com/stylefeng/Guns](https://github.com/stylefeng/Guns)## 赞助商
非常感谢 Jetbrains 提供的免费授权。