This commit is contained in:
Shikong 2022-10-06 22:22:54 +08:00
parent 40f98a050f
commit 4b522259ec
3 changed files with 18 additions and 5 deletions

View File

@ -32,6 +32,14 @@ func ParseError(err error) error {
return nil
}
func ParseErrorWithCode(code int, err error) error {
if err != nil {
return NewErrorWithCode(code, err.Error())
}
return nil
}
func NewDefaultError(msg string) error {
return NewErrorWithCode(response.ERROR, msg)
}

View File

@ -66,12 +66,12 @@ func (c *Controller) RefreshToken() {
c.Router.Post("refreshToken", func(ctx *fiber.Ctx) error {
refresh := &dto.RefreshToken{}
err := ctx.BodyParser(refresh)
if err = errorx.ParseError(err); err != nil {
if err = errorx.ParseErrorWithCode(fiber.StatusUnauthorized, err); err != nil {
return ctx.JSON(err)
}
result, err := auth.Services.RefreshToken(refresh.RefreshToken)
if err = errorx.ParseError(err); err != nil {
if err = errorx.ParseErrorWithCode(fiber.StatusUnauthorized, err); err != nil {
return ctx.JSON(err)
}

View File

@ -32,6 +32,9 @@ func InitService() {
Services = &Service{}
}
// generateAndSaveRefreshToken
//
// 生成并保存 refreshToken 刷新令牌
func (s *Service) generateAndSaveRefreshToken(user *models.User) (refreshToken string, err error) {
refreshToken, err = global.GetNanoId()
if err != nil {
@ -73,13 +76,15 @@ func (s *Service) Login(login *dto.Login) (result *vo.Login, err error) {
}
func (s *Service) RefreshToken(refreshToken string) (result *vo.Login, err error) {
refreshToken = RefreshTokenPrefix + refreshToken
ctx := context.Background()
data, err := global.Redis.Get(ctx, RefreshTokenPrefix+refreshToken).Result()
data, err := global.Redis.Get(ctx, refreshToken).Result()
if err != nil {
return nil, InvalidRefreshToken
}
global.Redis.Del(ctx, RefreshTokenPrefix+refreshToken)
global.Redis.Del(ctx, refreshToken)
cache := &models.User{}
err = json.Unmarshal([]byte(data), cache)
@ -90,7 +95,7 @@ func (s *Service) RefreshToken(refreshToken string) (result *vo.Login, err error
user := &models.User{Id: cache.Id, Account: cache.Account}
exist, err := global.DataSources.Get(user)
if !exist {
logger.Log.Infof("未能从 %s 找到用户信息", RefreshTokenPrefix+refreshToken)
logger.Log.Infof("未能从 %s 找到用户信息", refreshToken)
return nil, InvalidRefreshToken
}