系统模块
系统模块(blog-module-system)是整个博客系统的核心基础模块,提供用户管理、角色权限、认证授权等功能。
模块概述
| 特性 | 说明 |
|---|---|
| 模块名称 | blog-module-system |
| 子模块 | blog-system-api, blog-system-service |
| 核心功能 | 用户、角色、认证 |
| 数据表 | sys_user, sys_role, sys_user_role |
架构设计
blog-module-system/
├── blog-system-api/ # API 层
│ ├── dto/ # 数据传输对象
│ │ ├── LoginDTO.java
│ │ ├── RegisterDTO.java
│ │ ├── UserDTO.java
│ │ └── RoleDTO.java
│ ├── vo/ # 视图对象
│ │ ├── LoginVO.java
│ │ ├── UserVO.java
│ │ └── RoleVO.java
│ └── interfaces/ # 服务接口
│
└── blog-system-service/ # Service 层
├── controller/ # REST 控制器
│ ├── AuthController.java # 认证:注册、登录、登出
│ ├── UserController.java # 用户管理
│ └── RoleController.java # 角色管理
├── service/ # 业务服务
│ ├── IUserService.java
│ ├── IRoleService.java
│ └── impl/
├── entity/ # 实体类
│ ├── User.java
│ ├── Role.java
│ └── UserRole.java
├── mapper/ # MyBatis Mapper
└── converter/ # MapStruct 转换器
核心功能
1. 用户认证
| API | 方法 | 路径 | 说明 |
|---|---|---|---|
| 注册 | POST | /api/v1/auth/register | 用户注册 |
| 登录 | POST | /api/v1/auth/login | 获取 JWT Token |
| 登出 | POST | /api/v1/auth/logout | 用户登出 |
认证流程:
- 用户提交用户名和密码
- 验证凭证成功后生成 JWT Token
- 客户端保存 Token,后续请求携带
Authorization: Bearer {token} - Spring Security 拦截器验证 Token 有效性
2. 用户管理
| API | 方法 | 路径 | 权限 |
|---|---|---|---|
| 获取当前用户 | GET | /api/v1/users/me | User |
| 更新个人资料 | PUT | /api/v1/users/me | User |
| 获取用户详情 | GET | /api/v1/users/{id} | Admin |
| 更新用户 | PUT | /api/v1/users/{id} | Admin |
| 删除用户 | DELETE | /api/v1/users/{id} | Admin |
3. 角色管理
| API | 方法 | 路径 | 权限 |
|---|---|---|---|
| 创建角色 | POST | /api/v1/roles | Admin |
| 获取角色 | GET | /api/v1/roles/{id} | Admin |
| 更新角色 | PUT | /api/v1/roles/{id} | Admin |
| 删除角色 | DELETE | /api/v1/roles/{id} | Admin |
| 分配角色 | POST | /api/v1/roles/{roleId}/users/{userId} | Admin |
| 移除角色 | DELETE | /api/v1/roles/{roleId}/users/{userId} | Admin |
数据模型
用户表 (sys_user)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 主键(雪花算法) |
| username | VARCHAR(50) | 用户名(唯一) |
| password | VARCHAR(100) | 密码(BCrypt 加密) |
| VARCHAR(100) | 邮箱(唯一) | |
| nickname | VARCHAR(50) | 昵称 |
| avatar | VARCHAR(255) | 头像 URL |
| status | TINYINT | 状态:0=禁用, 1=启用 |
角色表 (sys_role)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 主键 |
| role_name | VARCHAR(50) | 角色名称 |
| role_key | VARCHAR(50) | 角色标识(如 ADMIN) |
| description | VARCHAR(200) | 描述 |
| status | TINYINT | 状态 |
用户角色关联表 (sys_user_role)
| 字段 | 类型 | 说明 |
|---|---|---|
| user_id | BIGINT | 用户 ID |
| role_id | BIGINT | 角色 ID |
安全配置
系统使用 Spring Security 6 + JWT 实现无状态认证:
- JWT 有效期: 2 小时(可配置)
- 密码加密: BCrypt
- 角色前缀:
ROLE_(Spring Security 自动添加)
相关文档
- 认证 API - 详细的认证接口文档
- 用户管理 API - 用户接口文档
- 角色管理 API - 角色接口文档
- Security 配置 - 安全架构详解