feat(auth): 记住登录 —— 刷新令牌持久化,不再在本机保存明文密码
CI / backend (push) Waiting to run

- 后端:新增 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/证书/密钥文件变更
This commit is contained in:
Logan.Li committed 2026-11-03 01:12:22 +08:00
1 parent 4bf7fb6e5c
commit a01b89f942
13 files changed
+531 -208

No files matched your search

+9 -1
View File
@@ -15,6 +15,14 @@ type Claims struct {
jwt.RegisteredClaims
}
// AccessTokenTTL 访问令牌有效期(配合刷新令牌使用,过期后由前端静默刷新) // Logan.Li
const AccessTokenTTL = 24 * time.Hour
// AccessTokenTTLSeconds 访问令牌有效期(秒,供响应体 expires_in 使用) // Logan.Li
func AccessTokenTTLSeconds() int64 {
return int64(AccessTokenTTL / time.Second)
}
// GenerateToken 生成 JWT 令牌(HS256,24h 过期) // Logan.Li
func GenerateToken(userID uint, username, role, secret string) (string, error) {
claims := Claims{
@@ -22,7 +30,7 @@ func GenerateToken(userID uint, username, role, secret string) (string, error) {
Username: username,
Role: role,
RegisteredClaims: jwt.RegisteredClaims{
ExpiresAt: jwt.NewNumericDate(time.Now().Add(24 * time.Hour)),
ExpiresAt: jwt.NewNumericDate(time.Now().Add(AccessTokenTTL)),
IssuedAt: jwt.NewNumericDate(time.Now()),
Issuer: "opsx-licence",
},