提交 8abe1bac authored 作者: mooncake9527's avatar mooncake9527

fix AuthCustom

上级 9d7fd918
......@@ -146,6 +146,11 @@ func AuthCustom(verify VerifyCustomFn, opts ...JwtOption) gin.HandlerFunc {
return func(c *gin.Context) {
authorization := c.GetHeader(HeaderAuthorizationKey)
if authorization == "" || len(authorization) < 10 {
responseUnauthorized(c, o.isSwitchHTTPCode)
c.Abort()
return
}
// token := strings.TrimPrefix(authorization, "Bearer ")
token := authorization[7:] // remove Bearer prefix
claims, err := jwt.ParseCustomToken(token)
......
package validator
import (
"mime/multipart"
"reflect"
"strings"
// // Translation 设置Translation
// func Translation() gin.HandlerFunc {
// en := en.New()
// zh := zh.New()
// universalTranslator := ut.New(zh, zh, en)
// valid := validator.New()
// _ = valid.RegisterValidation("mobile", func(fl validator.FieldLevel) bool {
// regex := regexp2.MustCompile(`^1[3456789]\d{9}$`, 0)
// phone := fl.Field().String()
// matched, err := regex.MatchString(phone)
// if err != nil {
// return false
// }
// return matched
// })
// //自定义电话验证方法
// _ = valid.RegisterValidation("phone", func(fl validator.FieldLevel) bool {
// regex := regexp2.MustCompile(`^(\d{3,4}-)?\d{6,11}$`, 0)
// phone := fl.Field().String()
// matched, err := regex.MatchString(phone)
// if err != nil {
// return false
// }
// return matched
// })
// //自定义图片验证方法
// _ = valid.RegisterValidation("image", func(fl validator.FieldLevel) bool {
// file := fl.Field().Interface()
// if fileHeader, ok := file.(multipart.FileHeader); ok {
// contentType := fileHeader.Header.Get("content-type")
// for _, t := range []string{"image/jpeg", "image/png", "image/gif"} {
// if strings.HasPrefix(contentType, t) {
// return true
// }
// }
// }
// return false
// })
"github.com/dlclark/regexp2"
"github.com/gin-gonic/gin"
"github.com/go-playground/locales/en"
"github.com/go-playground/locales/zh"
ut "github.com/go-playground/universal-translator"
"github.com/go-playground/validator/v10"
en_translations "github.com/go-playground/validator/v10/translations/en"
zh_translations "github.com/go-playground/validator/v10/translations/zh"
)
// Translation 设置Translation
func Translation() gin.HandlerFunc {
en := en.New()
zh := zh.New()
universalTranslator := ut.New(zh, zh, en)
valid := validator.New()
_ = valid.RegisterValidation("mobile", func(fl validator.FieldLevel) bool {
regex := regexp2.MustCompile(`^1[3456789]\d{9}$`, 0)
phone := fl.Field().String()
matched, err := regex.MatchString(phone)
if err != nil {
return false
}
return matched
})
//自定义电话验证方法
_ = valid.RegisterValidation("phone", func(fl validator.FieldLevel) bool {
regex := regexp2.MustCompile(`^(\d{3,4}-)?\d{6,11}$`, 0)
phone := fl.Field().String()
matched, err := regex.MatchString(phone)
if err != nil {
return false
}
return matched
})
//自定义图片验证方法
_ = valid.RegisterValidation("image", func(fl validator.FieldLevel) bool {
file := fl.Field().Interface()
if fileHeader, ok := file.(multipart.FileHeader); ok {
contentType := fileHeader.Header.Get("content-type")
for _, t := range []string{"image/jpeg", "image/png", "image/gif"} {
if strings.HasPrefix(contentType, t) {
return true
}
}
}
return false
})
return func(c *gin.Context) {
//根据参数取翻译器实例
locale := c.DefaultQuery("locale", "zh")
trans, _ := universalTranslator.GetTranslator(locale)
switch locale {
case "en":
_ = en_translations.RegisterDefaultTranslations(valid, trans)
valid.RegisterTagNameFunc(func(fld reflect.StructField) string {
return fld.Tag.Get("encomment")
})
default:
_ = zh_translations.RegisterDefaultTranslations(valid, trans)
valid.RegisterTagNameFunc(func(fld reflect.StructField) string {
return fld.Tag.Get("comment")
})
_ = valid.RegisterTranslation("mobile", trans, func(ut ut.Translator) error {
return ut.Add("mobile", "{0}填写不正确", true)
}, func(ut ut.Translator, fe validator.FieldError) string {
t, _ := ut.T("mobile", fe.Field())
return t
})
_ = valid.RegisterTranslation("phone", trans, func(ut ut.Translator) error {
return ut.Add("phone", "{0}填写不正确", true)
}, func(ut ut.Translator, fe validator.FieldError) string {
t, _ := ut.T("phone", fe.Field())
return t
})
_ = valid.RegisterTranslation("image", trans, func(ut ut.Translator) error {
return ut.Add("image", "请上传{0}", true)
}, func(ut ut.Translator, fe validator.FieldError) string {
t, _ := ut.T("image", fe.Field())
return t
})
}
c.Set(CtxKey_Translator, trans)
c.Set(CtxKey_Validator, valid)
c.Next()
}
}
// return func(c *gin.Context) {
// //根据参数取翻译器实例
// locale := c.DefaultQuery("locale", "zh")
// trans, _ := universalTranslator.GetTranslator(locale)
// switch locale {
// case "en":
// _ = en_translations.RegisterDefaultTranslations(valid, trans)
// valid.RegisterTagNameFunc(func(fld reflect.StructField) string {
// return fld.Tag.Get("encomment")
// })
// default:
// _ = zh_translations.RegisterDefaultTranslations(valid, trans)
// valid.RegisterTagNameFunc(func(fld reflect.StructField) string {
// return fld.Tag.Get("comment")
// })
// _ = valid.RegisterTranslation("mobile", trans, func(ut ut.Translator) error {
// return ut.Add("mobile", "{0}填写不正确", true)
// }, func(ut ut.Translator, fe validator.FieldError) string {
// t, _ := ut.T("mobile", fe.Field())
// return t
// })
// _ = valid.RegisterTranslation("phone", trans, func(ut ut.Translator) error {
// return ut.Add("phone", "{0}填写不正确", true)
// }, func(ut ut.Translator, fe validator.FieldError) string {
// t, _ := ut.T("phone", fe.Field())
// return t
// })
// _ = valid.RegisterTranslation("image", trans, func(ut ut.Translator) error {
// return ut.Add("image", "请上传{0}", true)
// }, func(ut ut.Translator, fe validator.FieldError) string {
// t, _ := ut.T("image", fe.Field())
// return t
// })
// }
// c.Set(CtxKey_Translator, trans)
// c.Set(CtxKey_Validator, valid)
// c.Next()
// }
// }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论