跳到主要内容

认证 API

基础路径: /api/v1/auth


POST /register

用户注册

请求

curl -X POST http://localhost:8080/api/v1/auth/register \
-H "Content-Type: application/json" \
-d '{
"username": "testuser",
"password": "Password123!",
"email": "test@example.com",
"nickname": "Test User"
}'

请求参数

字段类型必填说明
usernameString3-20字符,字母数字下划线
passwordString8-20字符,含大小写和数字
emailString有效邮箱格式
nicknameString最多30字符

响应

{
"code": 0,
"message": "success",
"data": {
"id": 1,
"username": "testuser",
"email": "test@example.com",
"nickname": "Test User",
"roles": ["ROLE_USER"]
}
}

错误

Code说明
400用户名已存在 / 邮箱已被注册

POST /login

用户登录

请求

curl -X POST http://localhost:8080/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"username": "testuser",
"password": "Password123!"
}'

请求参数

字段类型必填说明
usernameString用户名或邮箱
passwordString密码

响应

{
"code": 0,
"message": "success",
"data": {
"token": "eyJhbGciOiJIUzI1NiJ9...",
"tokenType": "Bearer",
"expiresIn": 7200,
"user": {
"id": 1,
"username": "testuser",
"roles": ["ROLE_USER"]
}
}
}

响应字段

字段说明
tokenJWT Token
tokenType固定 "Bearer"
expiresIn有效期(秒),默认 7200(2小时)

错误

Code说明
401用户名或密码错误 / 账号已被禁用

POST /logout

用户登出(需认证)

请求

curl -X POST http://localhost:8080/api/v1/auth/logout \
-H "Authorization: Bearer {token}"

响应

{
"code": 0,
"message": "success",
"data": null
}
JWT 无状态

登出主要由客户端删除 Token 实现。此接口用于记录登出日志。


使用流程

sequenceDiagram
participant C as 客户端
participant S as 服务端

C->>S: POST /auth/register
S-->>C: UserVO

C->>S: POST /auth/login
S-->>C: JWT Token

Note over C: 保存 Token

C->>S: GET /api/v1/users/me<br/>Header: Authorization: Bearer {token}
S-->>C: UserVO

C->>S: POST /auth/logout
Note over C: 删除本地 Token

安全建议

  1. HTTPS — 生产环境必须使用
  2. Token 存储 — Web 用 httpOnly Cookie,移动端用 Keychain/Keystore
  3. 密码强度 — 前端应验证密码规则
  4. 防暴力破解 — 建议实现登录限流