diff --git a/pkg/utils/status.go b/pkg/utils/status.go index 5a5826b..de2a004 100644 --- a/pkg/utils/status.go +++ b/pkg/utils/status.go @@ -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:" ) diff --git a/services/user/internal/logic/authHelper.go b/services/user/internal/logic/authHelper.go index 14959ce..167797d 100644 --- a/services/user/internal/logic/authHelper.go +++ b/services/user/internal/logic/authHelper.go @@ -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 diff --git a/services/user/internal/logic/response.go b/services/user/internal/logic/response.go index dd0c5b7..c354e1b 100644 --- a/services/user/internal/logic/response.go +++ b/services/user/internal/logic/response.go @@ -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 }