feat(user): 实现基础用户系统
- 实现用户手机验证码、密码登录功能,支持 JWT 认证 - 实现用户注册功能 - 实现jwt中获取用户信息
This commit is contained in:
@@ -2,15 +2,18 @@ package validator
|
||||
|
||||
// 定义自定义错误消息
|
||||
var customMessages = map[string]string{
|
||||
"Name.min": "姓名不能少于1个字",
|
||||
"Name.required": "姓名是必填项",
|
||||
"Name.name": "姓名只能包含中文",
|
||||
"Mobile.required": "手机号是必填项",
|
||||
"Mobile.min": "电话号码必须为有效的中国电话号码",
|
||||
"Mobile.max": "电话号码必须为有效的中国电话号码",
|
||||
"Mobile.mobile": "电话号码必须为有效的中国电话号码",
|
||||
"IDCard.required": "身份证号是必填项",
|
||||
"IDCard.idCard": "无效的身份证号码",
|
||||
"Name.min": "姓名不能少于1个字",
|
||||
"Name.required": "姓名是必填项",
|
||||
"Name.name": "姓名只能包含中文",
|
||||
"Mobile.required": "手机号是必填项",
|
||||
"Mobile.min": "电话号码必须为有效的中国电话号码",
|
||||
"Mobile.max": "电话号码必须为有效的中国电话号码",
|
||||
"Mobile.mobile": "电话号码必须为有效的中国电话号码",
|
||||
"IDCard.required": "身份证号是必填项",
|
||||
"IDCard.idCard": "无效的身份证号码",
|
||||
"Password.min": "密码不能少于8位数",
|
||||
"Password.max": "密码不能超过32位数",
|
||||
"password.password": "密码强度太弱",
|
||||
}
|
||||
|
||||
// 获取自定义错误消息
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"fmt"
|
||||
"github.com/go-playground/validator/v10"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var validate *validator.Validate
|
||||
@@ -43,6 +44,16 @@ func init() {
|
||||
if err := validate.RegisterValidation("mobileType", validMobileType); err != nil {
|
||||
panic(fmt.Sprintf("注册 mobileType 验证器时发生错误: %v", err))
|
||||
}
|
||||
if err := validate.RegisterValidation("password", validatePassword); err != nil {
|
||||
panic(fmt.Sprintf("注册 password 验证器时发生错误: %v", err))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 弱口令列表
|
||||
var weakPasswords = []string{
|
||||
"12345678", "password", "123456789", "qwerty", "123456", "letmein",
|
||||
"1234567", "welcome", "abc123", "password1", "1234", "111111", "admin",
|
||||
}
|
||||
|
||||
// Validate 校验参数逻辑
|
||||
@@ -127,3 +138,17 @@ func validMobileType(fl validator.FieldLevel) bool {
|
||||
|
||||
return validTypes[mobileType]
|
||||
}
|
||||
|
||||
// 自定义密码强度校验函数
|
||||
func validatePassword(fl validator.FieldLevel) bool {
|
||||
password := fl.Field().String()
|
||||
|
||||
// 检查密码是否在弱口令列表中
|
||||
for _, weakPwd := range weakPasswords {
|
||||
if strings.ToLower(password) == weakPwd {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user