1. 有状态 JWT(Token 存 Redis):
- 新增 token_store.go: Token 的 Redis 存取管理
- echo:auth:token:{user_id} → Access Token (TTL = access_expire_min)
- echo:auth:refresh:{user_id} → Refresh Token (TTL = refresh_expire_day)
- 登录/注册时自动将 Token 存入 Redis(覆盖旧 Token,实现单设备登录)
- JWT 中间件增加 Redis 有效性校验(TokenValidator 接口解耦)
- 登出时从 Redis 删除 Token,使其立即失效
- 刷新 Token 时校验 Redis 中的 Refresh Token
2. 统一成功响应为 "success" + 200:
- 注册接口改用 ResponseOK(原 ResponseCreated/201)
- 所有成功响应统一为 {"code": 0, "message": "success"}
3. API 文档同步更新:
- frontend/auth.md: 登出说明改为 Redis 方案、注册响应统一
- README.md: 移除 "created" 示例
已验证:登出后 Token 立即失效 ✓ 重新登录后新 Token 有效 ✓
Made-with: Cursor
21 lines
537 B
Go
21 lines
537 B
Go
// Package auth 提供用户认证与授权模块
|
|
package auth
|
|
|
|
import (
|
|
"github.com/echochat/backend/app/auth/controller"
|
|
"github.com/echochat/backend/app/auth/dao"
|
|
"github.com/echochat/backend/app/auth/service"
|
|
"github.com/google/wire"
|
|
)
|
|
|
|
// AuthSet Auth 模块依赖注入 Provider Set
|
|
// 提供 DAO 层、Service 层和 Controller 层的所有组件
|
|
var AuthSet = wire.NewSet(
|
|
dao.NewUserDAO,
|
|
dao.NewRoleDAO,
|
|
service.NewTokenStore,
|
|
service.NewAuthService,
|
|
controller.NewAuthController,
|
|
controller.NewAdminAuthController,
|
|
)
|