Files
opsx-licence/backend/internal/dto/auth.go
T
Logan.Li a01b89f942
CI / backend (push) Waiting to run
feat(auth): 记住登录 —— 刷新令牌持久化,不再在本机保存明文密码
- 后端:新增 refresh_token 模型与服务,登录签发 refresh token,支持静默续期与登出撤销
  (backend/internal/model/refresh_token.go, backend/internal/service/auth/refresh.go,
   auth_controller/auth_service/dto/router/jwt 配套改动)
- 前端:登录页改为「记住登录」(只持久化引导令牌与用户名,不落盘密码),401 自动刷新并重试原请求
  (stores/user.js, api/request.js, api/auth.js, main.js, Login.vue 配套改动)
- 部署:已在容器中验证运行(镜像构建于 2026-11-03 00:50,服务 healthy)
- 安全:仓库内无任何 .env/证书/密钥文件变更
2026-11-03 01:12:22 +08:00

42 lines
1.4 KiB
Go

package dto
// LoginRequest 登录请求 // Logan.Li
type LoginRequest struct {
Username string `json:"username" binding:"required"`
Password string `json:"password" binding:"required"`
}
// LoginResponse 登录响应 // Logan.Li
type LoginResponse struct {
Token string `json:"token"`
ExpiresIn int64 `json:"expires_in"` // 访问令牌有效期(秒)
RefreshToken string `json:"refresh_token"` // 一次性返回,前端按需本地保存
RefreshExpiresAt string `json:"refresh_expires_at"` // 刷新令牌到期时间(RFC3339)
UserInfo UserInfoResponse `json:"user_info"`
}
// RefreshRequest 刷新访问令牌请求 // Logan.Li
type RefreshRequest struct {
RefreshToken string `json:"refresh_token" binding:"required"`
}
// LogoutRequest 登出请求(撤销刷新令牌,缺省也返回成功) // Logan.Li
type LogoutRequest struct {
RefreshToken string `json:"refresh_token"`
}
// UserInfoResponse 用户信息响应 // Logan.Li
type UserInfoResponse struct {
ID uint `json:"id"`
Username string `json:"username"`
Email string `json:"email"`
Avatar string `json:"avatar"`
Role string `json:"role"`
}
// ChangePasswordRequest 修改密码请求 // Logan.Li
type ChangePasswordRequest struct {
OldPassword string `json:"old_password" binding:"required"`
NewPassword string `json:"new_password" binding:"required,min=6"`
}