feat: 管理后台认证加固——改密即失效旧令牌/账号锁定/登录审计/release随机初始密码

This commit is contained in:
Logan.Li committed 2026-09-14 21:08:39 +08:00
1 parent b76111dfc3
commit 2f0cb71fc2
7 files changed
+127 -11

No files matched your search

+20 -2
View File
@@ -3,7 +3,10 @@ package database
import (
"backend/internal/model"
"backend/utils"
"crypto/rand"
"encoding/base64"
"log"
"os"
"time"
"gorm.io/gorm"
@@ -11,9 +14,22 @@ import (
const (
defaultAdminUsername = "admin"
// 仅 debug 模式使用固定默认密码;release 模式首次启动生成随机密码并打印到日志 // Logan.Li
defaultAdminPassword = "admin"
)
// initialAdminPassword 按运行模式决定初始管理员密码:release 随机生成,debug 用固定值 // Logan.Li
func initialAdminPassword() string {
if os.Getenv("GIN_MODE") == "release" {
buf := make([]byte, 15)
if _, err := rand.Read(buf); err != nil {
log.Fatal("[安全] 生成初始管理员密码失败:", err)
}
return base64.RawURLEncoding.EncodeToString(buf)
}
return defaultAdminPassword
}
// SeedDefaults 初始化默认数据:管理员账号 + 系统设置 + 示例业务数据 // Logan.Li
func SeedDefaults(db *gorm.DB) error {
if err := seedAdmin(db); err != nil {
@@ -42,9 +58,10 @@ func seedAdmin(db *gorm.DB) error {
return nil
}
initialPassword := initialAdminPassword()
admin := model.User{
Username: defaultAdminUsername,
Password: utils.HashPassword(defaultAdminPassword),
Password: utils.HashPassword(initialPassword),
Email: "admin@opsx-licence.local",
Role: "admin",
IsActive: true,
@@ -52,7 +69,8 @@ func seedAdmin(db *gorm.DB) error {
if err := db.Create(&admin).Error; err != nil {
return err
}
log.Printf("[初始化] 已创建默认管理员账号: %s / %s(请尽快修改密码)", defaultAdminUsername, defaultAdminPassword)
log.Printf("[初始化] 已创建管理员账号: %s / %s(仅打印一次,release 部署后请立即修改密码)",
defaultAdminUsername, initialPassword)
return nil
}