add
wangpengfei
2023-07-20 aab89dff18f597d4cdd10c73b9ad8c3c14d82d28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package service
 
import (
    "aps_crm/conf"
    "aps_crm/constvar"
    "aps_crm/model"
    "aps_crm/model/redisstore"
    "aps_crm/pkg/logx"
    "aps_crm/utils"
)
 
type JwtService struct{}
 
// JsonInBlacklist 拉黑jwt
func (jwtService *JwtService) JsonInBlacklist(jwtList model.JwtBlacklist) (err error) {
    err = model.NewJwtBlacklistSearch(nil).Create(&jwtList)
    if err != nil {
        return
    }
    constvar.BlackCache.SetDefault(jwtList.Jwt, struct{}{})
    return
}
 
// IsBlacklist 判断JWT是否在黑名单内部
func (jwtService *JwtService) IsBlacklist(jwt string) bool {
    _, ok := constvar.BlackCache.Get(jwt)
    return ok
    //_, err := model.NewJwtBlacklistSearch(nil).SetJWT(jwt).First()
    //isNotFound := errors.Is(err, gorm.ErrRecordNotFound)
    //return !isNotFound
}
 
// GetRedisJWT 从redis取jwt
func (jwtService *JwtService) GetRedisJWT(userName string) (redisJWT string, err error) {
    return redisstore.NewJWT().Get(userName)
}
 
// SetRedisJWT jwt存入redis并设置过期时间
func (jwtService *JwtService) SetRedisJWT(jwt string, userName string) (err error) {
    // 此处过期时间等于jwt过期时间
    dr, err := utils.ParseDuration(conf.Conf.JWT.ExpiresTime)
    if err != nil {
        return err
    }
    timer := dr
    return redisstore.NewJWT().Set(userName, jwt, timer)
}
 
func LoadAll() {
    data, err := model.NewJwtBlacklistSearch(nil).FindNotTotal()
    if err != nil {
        logx.Errorf("加载数据库jwt黑名单失败! err:%v", err)
        return
    }
 
    // jwt黑名单 加入 BlackCache 中
    for _, v := range data {
        constvar.BlackCache.SetDefault(v.Jwt, struct{}{})
    }
}