53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
|
package system
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"go.uber.org/zap"
|
||
|
|
||
|
"github.com/flipped-aurora/gin-vue-admin/server/global"
|
||
|
"github.com/flipped-aurora/gin-vue-admin/server/model/system"
|
||
|
)
|
||
|
|
||
|
type JwtService struct{}
|
||
|
|
||
|
var JwtServiceApp = new(JwtService)
|
||
|
|
||
|
//@author: [piexlmax](https://github.com/piexlmax)
|
||
|
//@function: JsonInBlacklist
|
||
|
//@description: 拉黑jwt
|
||
|
//@param: jwtList model.JwtBlacklist
|
||
|
//@return: err error
|
||
|
|
||
|
func (jwtService *JwtService) JsonInBlacklist(jwtList system.JwtBlacklist) (err error) {
|
||
|
err = global.GVA_DB.Create(&jwtList).Error
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
global.BlackCache.SetDefault(jwtList.Jwt, struct{}{})
|
||
|
return
|
||
|
}
|
||
|
|
||
|
//@author: [piexlmax](https://github.com/piexlmax)
|
||
|
//@function: GetRedisJWT
|
||
|
//@description: 从redis取jwt
|
||
|
//@param: userName string
|
||
|
//@return: redisJWT string, err error
|
||
|
|
||
|
func (jwtService *JwtService) GetRedisJWT(userName string) (redisJWT string, err error) {
|
||
|
redisJWT, err = global.GVA_REDIS.Get(context.Background(), userName).Result()
|
||
|
return redisJWT, err
|
||
|
}
|
||
|
|
||
|
func LoadAll() {
|
||
|
var data []string
|
||
|
err := global.GVA_DB.Model(&system.JwtBlacklist{}).Select("jwt").Find(&data).Error
|
||
|
if err != nil {
|
||
|
global.GVA_LOG.Error("加载数据库jwt黑名单失败!", zap.Error(err))
|
||
|
return
|
||
|
}
|
||
|
for i := 0; i < len(data); i++ {
|
||
|
global.BlackCache.SetDefault(data[i], struct{}{})
|
||
|
} // jwt黑名单 加入 BlackCache 中
|
||
|
}
|