feat: 管理后台认证加固——改密即失效旧令牌/账号锁定/登录审计/release随机初始密码
This commit is contained in:
1 parent
b76111dfc3
commit
2f0cb71fc2
7 files changed
+127
-11
No files matched your search
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user