讲师中心 微信公众号
AI工具推荐 视频效率加速

Echo框架怎么处理JWT过期问题

风静姑娘_5934

风静姑娘_5934

发布时间:2026-10-14 10:32:30

|

779人浏览过

|

来源于php中文网

原创

Echo框架不处理JWT过期逻辑,过期检查完全依赖jwt.ParseWithClaims的选项配置;必须显式添加jwt.WithExpirationRequired()等选项才能拦截过期token,否则仅签名正确即放行。

echo框架怎么处理jwt过期问题

直接说结论:Echo 框架本身不处理 JWT 过期逻辑,echo-jwt/v4 只做基础解析和签名验证;过期检查是否生效、容忍多少时钟偏差、是否允许 exp 字段缺失——全靠你配的 jwt.ParseWithClaims 参数和 KeyFunc 里的行为决定。

为什么 echo-jwt 默认“过期了也不报错”?

因为 echo-jwt 底层调用的是 golang-jwt/jwt/v5 的 ParseWithClaims,而这个函数默认不强制校验 exp 字段。如果你没显式传入 jwt.WithExpirationRequired() 或 jwt.WithValidTimeFunc,它就会安静地放过已过期的 token。

  • 现象:请求带一个过期 2 小时的 token,echo-jwt 中间件仍放行,后续业务代码才发现用户身份异常
  • 根本原因:token.Valid 返回 true,仅因签名正确 + 时间字段存在(哪怕 exp < now)
  • 正确做法:在 echo-jwt.Config 的 SigningMethod 和 KeyFunc 外,必须加 Options 数组

如何让过期 token 真正被拦截?

不是靠中间件开关,而是靠 jwt.ParseWithClaims 的选项组合。下面这段配置才是生产环境该写的:

Echo框架 5.1.0
Echo框架 5.1.0

Echo框架 5.1.0 版本源码包下载,适合关注 RealIP 行为变化、StartConfig.Listener、NewDefaultFS 和观测性中间件入口的开发团队。

下载
config := jwt.Config{
    KeyFunc: func(token *jwt.Token) (interface{}, error) {
        if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
            return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"])
        }
        return jwtKey, nil
    },
    Options: []jwt.ParserOption{
        jwt.WithExpirationRequired(),     // 强制 exp 存在且未过期
        jwt.WithIssuedAt(),               // 强制校验 iat
        jwt.WithValidTimeFunc(func(t time.Time) bool {
            // 容忍服务端与客户端最多 ±5 秒时钟漂移
            return t.After(time.Now().Add(-5 * time.Second)) &&
                   t.Before(time.Now().Add(5 * time.Second))
        }),
    },
}
e.Use(jwt.WithConfig(config))
  • 缺 WithExpirationRequired() → 过期 token 不报错
  • 缺 WithValidTimeFunc → 服务器时间比客户端快 3 秒,刚签发就报 token is expired
  • WithIssuedAt() 能防重放,但必须配合 iat 字段签发,否则解析失败

过期后怎么让用户无感续期?

别指望 echo-jwt 帮你刷新 token——它连 refresh_token 都不认识。你要自己暴露一个 /auth/refresh 接口,规则必须严格:

  • 该接口不能走 echo-jwt 中间件(否则过期 token 进不来),改用自定义 header 解析或 cookie 提取
  • 从请求中拿到旧 refresh_token,查 DB/Redis 验证有效性、绑定关系、未被吊销
  • 验证通过后,签发一对新 token:access_token(15 分钟)+ refresh_token(7 天),并更新存储中的旧 refresh token 状态
  • 务必在响应头里设 HttpOnly + Secure Cookie 存 refresh token,别放 body 里

黑名单校验必须放在 echo-jwt 之后

很多人想在 echo-jwt 里塞黑名单逻辑,这是错的。它设计就是无状态的,强行改源码会破坏升级路径。

  • 正确链路:echo-jwt → blacklistMiddleware → 业务 handler
  • 黑名单中间件只做一件事:从 c.Get("user") 断言出 *jwt.Token,取 token.Claims.(jwt.MapClaims)["jti"],查 Redis key revoked:{jti}
  • 注意 fallback:如果没设 jti,可用 token.Raw 做哈希后查,但性能差、易冲突
  • Redis 写入要用 SET revoked:{jti} "" EX 900 NX,避免并发登出时漏写

最常被忽略的一点:echo-jwt 放行的 token,不代表它“有效”,只代表“格式合法、签名正确、时间字段没明显错”。真正的业务有效性(是否登出、是否被吊销、是否超出设备限制)必须由你自己的中间件补全,而且顺序不能错——它永远在 echo-jwt 之后,且不能重复解析 token。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

相关专题

更多
剧云AI短剧创作教程合集
剧云AI短剧创作教程合集

本专题聚焦剧云AI短剧创作,讲解从短剧灵感、梗概、全局大纲到分集、分场和正文的完整流程及节奏设计方法。

0

2026.10.14

剧云AI剧本创作零基础入门
剧云AI剧本创作零基础入门

本专题系统讲解剧云AI剧本创作流程,涵盖灵感、梗概、大纲、分场与正文生成,帮助新手快速完成首个中文剧本项目。

0

2026.10.14

VibeKnow文档转视频操作指南
VibeKnow文档转视频操作指南

本专题讲解VibeKnow上传Word、TXT、Markdown等材料生成视频的方法,覆盖内容解析、脚本组织、画面生成与成片检查。

0

2026.10.14

VibeKnow知识视频制作与导出详解
VibeKnow知识视频制作与导出详解

本专题整理VibeKnow从注册、素材上传、AI生成到预览导出的完整操作,帮助新手快速制作第一条知识讲解视频。

0

2026.10.14

二狗PPT大纲编辑实操指南
二狗PPT大纲编辑实操指南

本专题聚焦二狗PPT结构化大纲的生成和修改,讲解标题、正文、目录、页数与页面顺序的调整方法,提升汇报逻辑和内容完整性。

0

2026.10.14

二狗PPT文档转PPT全教程
二狗PPT文档转PPT全教程

本专题讲解二狗PPT解析Word、PDF、Excel和PPT资料的方法,涵盖文件上传、内容提取、大纲整理、异常处理与转换后校对。

0

2026.10.14

讯飞绘文全功能使用教程
讯飞绘文全功能使用教程

本专题系统整理讯飞绘文官网入口、注册登录、工作台及内容创作流程,帮助用户熟悉常用功能,快速完成首篇图文内容。

0

2026.10.14

讯飞绘文AI写作与文案生成合集
讯飞绘文AI写作与文案生成合集

本专题聚焦讯飞绘文AI写作、提纲生成、文章改写和文案润色,覆盖从主题输入到成稿优化的关键操作与实用技巧。

0

2026.10.14

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

100

2026.10.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Echo框架IP地址文档
Echo框架IP地址文档

共0课时 | 0人学习

Echo框架中文安装文档
Echo框架中文安装文档

共0课时 | 0人学习

Echo框架快速入门指南
Echo框架快速入门指南

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn