// Code generated by hertz generator. package auth import ( "cn/oneao/base-go/utils/errorx" "cn/oneao/base-go/utils/jwtx" "cn/oneao/base-go/utils/response" "context" auth "cn/oneao/base-go/biz/model/auth" "github.com/cloudwego/hertz/pkg/app" "github.com/cloudwego/hertz/pkg/protocol/consts" ) // RefreshAccessToken . // @router /auth/refresh/token [GET] func RefreshAccessToken(ctx context.Context, c *app.RequestContext) { var err error var req auth.RefreshAccessTokenReq err = c.BindAndValidate(&req) if err != nil { c.String(consts.StatusBadRequest, err.Error()) return } refreshToken := string(c.GetHeader("refreshToken")) if refreshToken == "" { response.Fail(c). Code(response.HttpCode.Unauthorized). Send() return } tokenResult := jwtx.VerifyToken(refreshToken) if !tokenResult.IsValid || tokenResult.IsExpired { // Refresh Token 无效或过期,需要重新登录 response.Fail(c). Code(response.HttpCode.Unauthorized). Send() return } userID := tokenResult.Claims.UserID // 生成新的 Access Token newAccessToken, err := jwtx.CreateAccessToken(userID) if err != nil { errorx.AddError(c, err) return } resp := new(auth.RefreshAccessTokenResp) resp.AccessToken = newAccessToken response.Success(c). Data(resp). Send() }