From 6aacbbab1cff3aaf053fa6f65c9e144063b594ed Mon Sep 17 00:00:00 2001 From: Victor_Jay Date: Tue, 2 Jun 2026 18:56:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AF=86=E7=A0=81=E5=BC=BA=E5=BA=A6?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E5=A2=9E=E5=BC=BA=EF=BC=8C=E8=A6=81=E6=B1=82?= =?UTF-8?q?=E5=A4=A7=E5=86=99+=E5=B0=8F=E5=86=99+=E6=95=B0=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - validatePassword 从"字母+数字"升级为"大写字母+小写字母+数字" - 拆分 pwLetter 为 pwLower([a-z]) 和 pwUpper([A-Z]) - 更新 ErrWeakPassword 错误提示 - 同步更新注册页和修改密码页的前端校验及提示文案 --- internal/common/errors.go | 2 +- internal/service/auth_password.go | 7 ++++--- templates/MetaLab-2026/html/auth/register.html | 4 ++-- templates/MetaLab-2026/html/settings/index.html | 6 +++--- templates/MetaLab-2026/static/js/register.js | 6 +++--- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/internal/common/errors.go b/internal/common/errors.go index 4964f8e..e771558 100644 --- a/internal/common/errors.go +++ b/internal/common/errors.go @@ -14,7 +14,7 @@ var ( ErrUserDeleted = errors.New("该账号正在注销中,登录即撤销注销") // 统一返回,避免泄露用户存在性、软删除状态等内部信息 ErrUserLocked = errors.New("邮箱或密码错误") - ErrWeakPassword = errors.New("密码需至少 8 位,且包含字母和数字") + ErrWeakPassword = errors.New("密码需至少 8 位,且包含大写字母、小写字母和数字") ErrTokenExpired = errors.New("登录已过期,请重新登录") ErrTokenInvalid = errors.New("无效的认证凭据") ErrTokenRevoked = errors.New("登录凭证已失效,请重新登录") diff --git a/internal/service/auth_password.go b/internal/service/auth_password.go index 2c57be5..4434055 100644 --- a/internal/service/auth_password.go +++ b/internal/service/auth_password.go @@ -11,7 +11,8 @@ import ( "gorm.io/gorm" ) -var pwLetter = regexp.MustCompile(`[a-zA-Z]`) +var pwLower = regexp.MustCompile(`[a-z]`) +var pwUpper = regexp.MustCompile(`[A-Z]`) var pwDigit = regexp.MustCompile(`\d`) // dummyHash 防时序攻击:当用户不存在时,仍对虚拟哈希执行完整的 bcrypt 比对 @@ -25,9 +26,9 @@ func init() { dummyHash = hash } -// validatePassword 密码强度:至少 8 位 + 包含字母 + 包含数字 +// validatePassword 密码强度:至少 8 位 + 包含大写字母 + 包含小写字母 + 包含数字 func validatePassword(pw string) error { - if len(pw) < 8 || !pwLetter.MatchString(pw) || !pwDigit.MatchString(pw) { + if len(pw) < 8 || !pwLower.MatchString(pw) || !pwUpper.MatchString(pw) || !pwDigit.MatchString(pw) { return common.ErrWeakPassword } return nil diff --git a/templates/MetaLab-2026/html/auth/register.html b/templates/MetaLab-2026/html/auth/register.html index 525082a..97f1f06 100644 --- a/templates/MetaLab-2026/html/auth/register.html +++ b/templates/MetaLab-2026/html/auth/register.html @@ -23,8 +23,8 @@
- - 密码至少 8 位,需包含字母与数字 + + 密码至少 8 位,需包含大小写字母与数字
diff --git a/templates/MetaLab-2026/html/settings/index.html b/templates/MetaLab-2026/html/settings/index.html index 30055dd..eefac56 100644 --- a/templates/MetaLab-2026/html/settings/index.html +++ b/templates/MetaLab-2026/html/settings/index.html @@ -274,7 +274,7 @@
- +