初始化项目文件
This commit is contained in:
78
api_iris/jwtSet/jwt.go
Normal file
78
api_iris/jwtSet/jwt.go
Normal file
@ -0,0 +1,78 @@
|
||||
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
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user