fix: user login type error
CI / changes (push) Successful in 38s
CI / ad (push) Successful in 31s
CI / admin (push) Successful in 20s
CI / bff (push) Successful in 17s
CI / chore (push) Successful in 23s
CI / equipment (push) Successful in 17s
CI / express (push) Successful in 18s
CI / factory (push) Successful in 17s
CI / message (push) Successful in 15s
CI / order (push) Successful in 18s
CI / payment (push) Successful in 16s
CI / product (push) Successful in 16s
CI / record (push) Successful in 15s
CI / sale (push) Successful in 17s
CI / support (push) Successful in 17s
CI / task (push) Successful in 17s
CI / user (push) Successful in 18s
CI / wecom (push) Successful in 19s
CI / changes (push) Successful in 38s
CI / ad (push) Successful in 31s
CI / admin (push) Successful in 20s
CI / bff (push) Successful in 17s
CI / chore (push) Successful in 23s
CI / equipment (push) Successful in 17s
CI / express (push) Successful in 18s
CI / factory (push) Successful in 17s
CI / message (push) Successful in 15s
CI / order (push) Successful in 18s
CI / payment (push) Successful in 16s
CI / product (push) Successful in 16s
CI / record (push) Successful in 15s
CI / sale (push) Successful in 17s
CI / support (push) Successful in 17s
CI / task (push) Successful in 17s
CI / user (push) Successful in 18s
CI / wecom (push) Successful in 19s
This commit is contained in:
+2
-2
@@ -90,13 +90,13 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// Login LoginUser 所有的登录 加上服务名:id
|
|
||||||
// %s 为,admin,user ,...
|
|
||||||
Login = "login:service:%s:token:"
|
Login = "login:service:%s:token:"
|
||||||
LoginKey = "login:service:%s:info:"
|
LoginKey = "login:service:%s:info:"
|
||||||
LoginRefreshKey = "login:service:%s:refresh:"
|
LoginRefreshKey = "login:service:%s:refresh:"
|
||||||
LoginTypeAdmin = "admin"
|
LoginTypeAdmin = "admin"
|
||||||
LoginTypeUser = "user"
|
LoginTypeUser = "user"
|
||||||
|
LoginTypeSale = "sale"
|
||||||
|
LoginTypeStore = "store"
|
||||||
|
|
||||||
CodeKey = "code:"
|
CodeKey = "code:"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ func issueLoginToken(ctx context.Context, jwtAuth *config.JWTAuth, saleSvcName s
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if st := setLogin(jwtAuth, ret.AccessToken, ret.RefreshToken, session); st.Code != utils.Ok.Code {
|
if st := setLogin(jwtAuth, ret.AccessToken, ret.RefreshToken, session, client); st.Code != utils.Ok.Code {
|
||||||
return nil, errors.New(st.Msg)
|
return nil, errors.New(st.Msg)
|
||||||
}
|
}
|
||||||
return &ret, nil
|
return &ret, nil
|
||||||
|
|||||||
@@ -95,27 +95,50 @@ func buildJwtToken(jwtAuth *config.JWTAuth, session dao.UserLoginSession) (dao.T
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func setLogin(jwtAuth *config.JWTAuth, accessToken, refreshToken string, session dao.UserLoginSession) utils.Status {
|
func loginCacheType(client *dao.Client) string {
|
||||||
|
if client == nil {
|
||||||
|
return utils.LoginTypeUser
|
||||||
|
}
|
||||||
|
switch client.SubjectType {
|
||||||
|
case dao.SubjectTypeSale:
|
||||||
|
return utils.LoginTypeSale
|
||||||
|
case dao.SubjectTypeStore:
|
||||||
|
return utils.LoginTypeStore
|
||||||
|
case dao.SubjectTypeUser:
|
||||||
|
return utils.LoginTypeUser
|
||||||
|
}
|
||||||
|
switch client.Type {
|
||||||
|
case dao.TypeSale:
|
||||||
|
return utils.LoginTypeSale
|
||||||
|
case dao.TypeStore:
|
||||||
|
return utils.LoginTypeStore
|
||||||
|
default:
|
||||||
|
return utils.LoginTypeUser
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func setLogin(jwtAuth *config.JWTAuth, accessToken, refreshToken string, session dao.UserLoginSession, client *dao.Client) utils.Status {
|
||||||
accessExpire := time.Duration(jwtAuth.Access.TTL) * time.Second
|
accessExpire := time.Duration(jwtAuth.Access.TTL) * time.Second
|
||||||
refreshExpire := time.Duration(jwtAuth.Refresh.TTL) * time.Second
|
refreshExpire := time.Duration(jwtAuth.Refresh.TTL) * time.Second
|
||||||
|
loginType := loginCacheType(client)
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
userStr, _ := jsoniter.Marshal(session)
|
userStr, _ := jsoniter.Marshal(session)
|
||||||
|
|
||||||
redisKey := utils.GetLoginKey(utils.LoginTypeUser, accessToken)
|
redisKey := utils.GetLoginKey(loginType, accessToken)
|
||||||
if err := redis.Client.Set(ctx, redisKey, userStr, accessExpire).Err(); err != nil {
|
if err := redis.Client.Set(ctx, redisKey, userStr, accessExpire).Err(); err != nil {
|
||||||
return utils.Fail
|
return utils.Fail
|
||||||
}
|
}
|
||||||
|
|
||||||
redisKeysKey := utils.GetLoginKeysKey(utils.LoginTypeUser, strconv.FormatInt(session.Id, utils.NumberTen))
|
redisKeysKey := utils.GetLoginKeysKey(loginType, strconv.FormatInt(session.Id, utils.NumberTen))
|
||||||
var loginInfo utils.LoginRedis
|
var loginInfo utils.LoginRedis
|
||||||
if oldAuth, err := redis.Client.Get(ctx, redisKeysKey).Result(); err == nil {
|
if oldAuth, err := redis.Client.Get(ctx, redisKeysKey).Result(); err == nil {
|
||||||
_ = jsoniter.Unmarshal([]byte(oldAuth), &loginInfo)
|
_ = jsoniter.Unmarshal([]byte(oldAuth), &loginInfo)
|
||||||
if len(loginInfo.Token) > utils.NumberOne {
|
if len(loginInfo.Token) > utils.NumberOne {
|
||||||
redis.Client.Del(ctx, utils.GetLoginKey(utils.LoginTypeUser, loginInfo.Token))
|
redis.Client.Del(ctx, utils.GetLoginKey(loginType, loginInfo.Token))
|
||||||
}
|
}
|
||||||
if len(loginInfo.Refresh) > utils.NumberOne {
|
if len(loginInfo.Refresh) > utils.NumberOne {
|
||||||
redis.Client.Del(ctx, utils.GetLoginRefreshKey(utils.LoginTypeUser, loginInfo.Refresh))
|
redis.Client.Del(ctx, utils.GetLoginRefreshKey(loginType, loginInfo.Refresh))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,7 +149,7 @@ func setLogin(jwtAuth *config.JWTAuth, accessToken, refreshToken string, session
|
|||||||
if err := redis.Client.Set(ctx, redisKeysKey, newStr, refreshExpire).Err(); err != nil {
|
if err := redis.Client.Set(ctx, redisKeysKey, newStr, refreshExpire).Err(); err != nil {
|
||||||
return utils.Fail
|
return utils.Fail
|
||||||
}
|
}
|
||||||
refreshKey := utils.GetLoginRefreshKey(utils.LoginTypeUser, refreshToken)
|
refreshKey := utils.GetLoginRefreshKey(loginType, refreshToken)
|
||||||
if err := redis.Client.Set(ctx, refreshKey, strconv.FormatInt(session.Id, utils.NumberTen), refreshExpire).Err(); err != nil {
|
if err := redis.Client.Set(ctx, refreshKey, strconv.FormatInt(session.Id, utils.NumberTen), refreshExpire).Err(); err != nil {
|
||||||
return utils.Fail
|
return utils.Fail
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user