package jwtSet import ( "github.com/iris-contrib/middleware/jwt" "github.com/kataras/iris/v12" "github.com/sirupsen/logrus" "main/database" "main/model" "main/utils" "time" ) var Jwt *jwt.Middleware var keys model.JwtKeys func GetJwtKeys() model.JwtKeys { db := database.GetInstance().GetMysqlDb() if utils.DataIsNil(keys) || keys.Date != time.Now().Format("2006-01-02") { keys = model.JwtKeys{} if err := db.Where("date = ? and token = ''", time.Now().Format("2006-01-02")).First(&keys).Error; err != nil { logrus.Errorln("sql执行失败:", err) //return model.JwtKeys{} } } if keys.Key == "" { keys.Date = time.Now().Format("2006-01-02") keys.Key = utils.NewKey(32) if err := db.Create(&keys).Error; err != nil { logrus.Errorln("sql执行失败:", err) return model.JwtKeys{} } } if !keys.Updated && !utils.DataIsNil(Jwt) { UpdateJwt() } return keys } func Init() { if utils.DataIsNil(keys) { GetJwtKeys() } Jwt = jwt.New(jwt.Config{ ValidationKeyGetter: func(token *jwt.Token) (interface{}, error) { return []byte(keys.Key), nil }, ErrorHandler: func(context iris.Context, err error) { if err == nil { return } context.StopExecution() context.StatusCode(iris.StatusUnauthorized) context.SetErr(err) }, Extractor: jwt.FromAuthHeader, SigningMethod: jwt.SigningMethodHS256, }) db := database.GetInstance().GetMysqlDb() keys.Updated = true if err := db.Updates(&keys).Error; err != nil { logrus.Errorln("sql执行失败:", err) return } } func UpdateJwt() { if utils.DataIsNil(keys) { GetJwtKeys() } Jwt.Config.ValidationKeyGetter = func(token *jwt.Token) (interface{}, error) { return []byte(keys.Key), nil } db := database.GetInstance().GetMysqlDb() keys.Updated = true if err := db.Updates(&keys).Error; err != nil { logrus.Errorln("sql执行失败:", err) return } }