MCPcopy Create free account
hub / github.com/GoSimplicity/LinkMe / VerifyRefreshToken

Method VerifyRefreshToken

utils/jwt/jwt.go:250–274  ·  view source on GitHub ↗

VerifyRefreshToken 验证refresh token

(ctx *gin.Context, token string)

Source from the content-addressed store, hash-verified

248
249// VerifyRefreshToken 验证refresh token
250func (h *handler) VerifyRefreshToken(ctx *gin.Context, token string) (bool, *RefreshClaims, error) {
251 // 解析refresh token
252 refreshClaims := &RefreshClaims{}
253 refreshToken, err := jwt.ParseWithClaims(token, refreshClaims, func(token *jwt.Token) (interface{}, error) {
254 return h.key2, nil
255 })
256
257 // 检查解析和验证结果
258 if err != nil || !refreshToken.Valid {
259 return false, nil, errors.New("无效的refresh token")
260 }
261
262 // 检查token是否在黑名单中
263 exists, err := h.client.Exists(ctx, fmt.Sprintf("linkme:user:ssid:%s", refreshClaims.Ssid)).Result()
264 if err != nil {
265 return false, nil, fmt.Errorf("检查token状态失败: %v", err)
266 }
267
268 // 如果token在黑名单中,说明已经失效
269 if exists > 0 {
270 return false, nil, errors.New("refresh token已失效")
271 }
272
273 return true, refreshClaims, nil
274}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected