# base_project
**Repository Path**: stranding-fish/base_project
## Basic Information
- **Project Name**: base_project
- **Description**: Springboot项目初始化模板
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-02-05
- **Last Updated**: 2026-02-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 项目初始化模板
- SpringBoot2.6
- JDK11
- MySQL5.7
- Mybatis-Plus
- Redisson
- SpringSecurity
- 基于jwt的双token鉴权
- hutool
实现了登录、登出、修改密码的基础功能,仅有一个基础的用户表:`sys_user`
合理的鉴权机制,可以再此基础之上进行快速的开发,减少了对登录鉴权机制的重复开发
**代码由Gemini3 Fast指导开发**
## 引言
一个项目的登录和鉴权模块基本是通用的,因此没有必要每次都进重建,因此将这部分抽离出来制作了一个项目初始化模板,可以免去登录和鉴权模块的开发,方便快速进入业务代码中。
## 登录和鉴权
使用了 `Spring Security` 鉴权模块,整体是基于 JWT 进行的。
### 数据库
仅仅只有用户表:
| 字段 | 类型 | 描述 |
| ----------- | ------------ | -------------------- |
| id | bigint | 主键 |
| username | varchar(64) | 用户名 |
| password | varchar(128) | 密码,使用Bcrypt加密 |
| create_time | datetime | 创建时间 |
| update_time | datetime | 更新时间 |
| status | tinyint | 0-正常 1-封禁 |
| is_deleted | tinyint | 0-正常 1-注销 |
```sql
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`id` bigint NOT NULL AUTO_INCREMENT,
`username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
`password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
`create_time` datetime NULL DEFAULT NULL,
`update_time` datetime NULL DEFAULT NULL,
`status` tinyint NULL DEFAULT 0 COMMENT '0-正常 1-封禁',
`is_deleted` tinyint UNSIGNED NULL DEFAULT 0 COMMENT '0-正常 1-注销',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
INSERT INTO `sys_user` VALUES (1, 'qqdd', '$2a$10$a/Bc./56KXc/KXubdfzGXuYhMfWPdFpZcbB7pJFz3oHecynPW.4t.', '2026-02-05 10:55:16', '2026-02-05 10:55:19', 0, 0);
-- 用户名:qqdd
-- 密码:123321
```
可以根据自己的需要进行字段的添加
### 设计逻辑
基于 JWT 的双 token 机制,搭配 uid 实现多端登录互不干扰
* `refresh_token`:用来刷新 `access_token` 的 token,有效期长,设置了 5 天。存储在 HttpOnly 的 Cookie 中
* `access_token`:用来请求鉴权使用的 token,有效期段,设置了 30 分钟。存储在 LocalStorage 中
* `uid`:用来标识当前用户的某台设备的某浏览器。用户登录成功后,就生成一个 `UUID` 存储到 HttpOnly 的 Cookie 中
实现了四个接口:`/auth/login`、`/auth/logout`、`/auth/refresh`、`/user/pwd`
#### 登录接口
#### 刷新`access_token`接口
#### 修改密码接口
#### 登出接口
