# 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`接口 #### 修改密码接口 #### 登出接口