coder-common-thin-backend/api/authentication/登录认证API.md
Leo aea2b1fbd7 docs: 新增完整的API接口文档
- 添加认证相关API文档(登录认证、验证码)
- 添加权限管理API文档(菜单管理、角色管理)
- 添加系统管理API文档(图片管理、文件管理、登录日志)
- 添加用户管理API文档
- 完善项目API文档结构,提升开发体验
2025-07-06 00:54:47 +08:00

255 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 登录认证API
## 概述
登录认证模块提供用户登录、退出、注册等功能使用Sa-Token进行身份认证和会话管理。
## 接口列表
### 1. 用户登录
**接口地址**: `POST /auth/login`
**接口描述**: 用户使用账号密码登录系统
**是否需要认证**: 否
**请求参数**:
```json
{
"loginName": "admin",
"password": "123456",
"codeKey": "uuid-key",
"securityCode": "1234",
"rememberMe": false
}
```
**请求参数说明**:
| 参数名 | 类型 | 必填 | 说明 | 校验规则 |
|--------|------|------|------|----------|
| loginName | String | 是 | 登录账号 | 长度3-16位只能包含字母和数字 |
| password | String | 是 | 登录密码 | 不能为空 |
| codeKey | String | 是 | 验证码UUID | 不能为空 |
| securityCode | String | 是 | 验证码 | 不能为空 |
| rememberMe | Boolean | 否 | 记住登录 | 默认false |
**响应示例**:
```json
{
"status": 200,
"msg": "SUCCESS",
"data": {
"tokenName": "Authorization",
"tokenValue": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
},
"traceId": "trace-123456"
}
```
**响应参数说明**:
| 参数名 | 类型 | 说明 |
|--------|------|------|
| tokenName | String | Token名称 |
| tokenValue | String | Token值 |
**错误码**:
| 状态码 | 错误信息 | 说明 |
|--------|----------|------|
| 400 | 账号长度为 3-16 位 | 登录账号长度不符合要求 |
| 400 | 账号格式为数字以及字母 | 登录账号格式不正确 |
| 400 | 请输入登录名 | 登录名为空 |
| 400 | 请输入密码 | 密码为空 |
| 400 | 验证码已失效 | 验证码Key无效 |
| 400 | 请输入验证码 | 验证码为空 |
| 400 | 验证码错误 | 验证码不正确 |
| 400 | 用户不存在 | 用户账号不存在 |
| 400 | 密码错误 | 密码不正确 |
| 400 | 账号已被停用 | 用户账号被禁用 |
| 400 | 账号已被锁定 | 用户账号被锁定 |
**调用示例**:
```bash
curl -X POST \
http://localhost:18099/auth/login \
-H 'Content-Type: application/json' \
-d '{
"loginName": "admin",
"password": "123456",
"codeKey": "550e8400-e29b-41d4-a716-446655440000",
"securityCode": "1234",
"rememberMe": false
}'
```
---
### 2. 用户退出
**接口地址**: `GET /auth/logout`
**接口描述**: 用户退出登录,清除会话信息
**是否需要认证**: 是
**请求头**:
```
Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
```
**请求参数**: 无
**响应示例**:
```json
{
"status": 200,
"msg": "SUCCESS",
"data": "退出成功",
"traceId": "trace-123456"
}
```
**错误码**:
| 状态码 | 错误信息 | 说明 |
|--------|----------|------|
| 401 | 当前会话未登录 | 用户未登录或Token无效 |
**调用示例**:
```bash
curl -X GET \
http://localhost:18099/auth/logout \
-H 'Authorization: your-token-value'
```
---
### 3. 用户注册
**接口地址**: `POST /auth/register`
**接口描述**: 新用户注册账号
**是否需要认证**: 否
**请求参数**:
```json
{
"loginName": "newuser",
"password": "123456",
"userName": "新用户",
"codeKey": "uuid-key",
"securityCode": "1234"
}
```
**请求参数说明**:
| 参数名 | 类型 | 必填 | 说明 | 校验规则 |
|--------|------|------|------|----------|
| loginName | String | 是 | 登录账号 | 长度3-16位只能包含字母和数字 |
| password | String | 是 | 登录密码 | 不能为空 |
| userName | String | 是 | 用户姓名 | 不能为空 |
| codeKey | String | 是 | 验证码UUID | 不能为空 |
| securityCode | String | 是 | 验证码 | 不能为空 |
**响应示例**:
```json
{
"status": 200,
"msg": "SUCCESS",
"data": "注册成功",
"traceId": "trace-123456"
}
```
**错误码**:
| 状态码 | 错误信息 | 说明 |
|--------|----------|------|
| 400 | 账号长度为 3-16 位 | 登录账号长度不符合要求 |
| 400 | 账号格式为数字以及字母 | 登录账号格式不正确 |
| 400 | 请输入登录名 | 登录名为空 |
| 400 | 请输入密码 | 密码为空 |
| 400 | 请输入用户姓名 | 用户姓名为空 |
| 400 | 验证码已失效 | 验证码Key无效 |
| 400 | 请输入验证码 | 验证码为空 |
| 400 | 验证码错误 | 验证码不正确 |
| 400 | 账号已存在 | 登录账号已被注册 |
**调用示例**:
```bash
curl -X POST \
http://localhost:18099/auth/register \
-H 'Content-Type: application/json' \
-d '{
"loginName": "newuser",
"password": "123456",
"userName": "新用户",
"codeKey": "550e8400-e29b-41d4-a716-446655440000",
"securityCode": "1234"
}'
```
---
## 认证流程说明
### 1. 登录流程
1. 用户获取验证码(调用验证码接口)
2. 用户输入账号、密码、验证码
3. 系统验证验证码有效性
4. 系统验证用户账号和密码
5. 系统检查用户状态(是否禁用/锁定)
6. 生成Token并返回给用户
7. 用户后续请求携带Token
### 2. Token使用
- Token需要在请求头中携带`Authorization: token-value`
- Token有过期时间过期后需要重新登录
- 系统支持多设备登录
- 管理员可以强制用户下线
### 3. 权限验证
- 登录后系统会根据用户角色加载权限
- 每个接口都会验证用户是否有相应权限
- 超级管理员拥有所有权限
### 4. 会话管理
- 用户登录信息存储在Redis中
- 支持会话延长
- 支持记住登录功能
- 系统会记录用户登录日志
## 安全特性
1. **密码加密**: 使用盐值加密存储密码
2. **验证码保护**: 防止暴力破解
3. **账号锁定**: 连续错误3次自动锁定
4. **IP限制**: 可配置IP白名单/黑名单
5. **会话安全**: Token有效期管理
6. **日志记录**: 记录所有登录操作
## 注意事项
1. 验证码有效期为5分钟
2. Token默认有效期为30天
3. 账号锁定时间为10分钟
4. 注册功能可通过配置开启/关闭
5. 建议在生产环境中启用HTTPS