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

This commit is contained in:
zzw
2026-10-05 16:22:05 +08:00
parent 851348ed5c
commit 28e20ba259
3 changed files with 32 additions and 9 deletions
+2 -2
View File
@@ -90,13 +90,13 @@ const (
)
const (
// Login LoginUser 所有的登录 加上服务名:id
// %s 为,admin,user ,...
Login = "login:service:%s:token:"
LoginKey = "login:service:%s:info:"
LoginRefreshKey = "login:service:%s:refresh:"
LoginTypeAdmin = "admin"
LoginTypeUser = "user"
LoginTypeSale = "sale"
LoginTypeStore = "store"
CodeKey = "code:"
)
+1 -1
View File
@@ -236,7 +236,7 @@ func issueLoginToken(ctx context.Context, jwtAuth *config.JWTAuth, saleSvcName s
if err != nil {
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 &ret, nil
+29 -6
View File
@@ -95,27 +95,50 @@ func buildJwtToken(jwtAuth *config.JWTAuth, session dao.UserLoginSession) (dao.T
}, 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
refreshExpire := time.Duration(jwtAuth.Refresh.TTL) * time.Second
loginType := loginCacheType(client)
ctx := context.Background()
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 {
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
if oldAuth, err := redis.Client.Get(ctx, redisKeysKey).Result(); err == nil {
_ = jsoniter.Unmarshal([]byte(oldAuth), &loginInfo)
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 {
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 {
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 {
return utils.Fail
}