Golang Gin怎么做JWT登录认证_Golang Gin JWT教程【实用】

jwt.Parse后必须手动检查token.Valid,因其仅解析结构和解密签名,过期、篡改等校验依赖token.Valid;应使用ParseWithClaims配合嵌入jwt.RegisteredClaims的结构体,并确保密钥≥32字节且不硬编码。jwt.Parse 之后必须手动检查 token.Valid很多人以为 jwt.Parse 不报错就代表 token 合法,其实不然------它只做结构解析和签名解密,**过期、篡改、算法不匹配等校验都延迟到 token.Valid 字段才真正触发**。漏掉这一步,会导致已过期或被篡改的 token 仍被放行。错误写法:if err == nil { /* 直接放行 */ }正确写法:if err != nil || !token.Valid { c.AbortWithStatusJSON(401, gin.H{"error": "invalid or expired token"}) }注意:即使 err == nil,token.Valid 也可能是 false(比如 exp 已过,但没被校验)用 ParseWithClaims 而不是 Parse 绑定自定义字段想从 token 里安全取 user_id 或 role?别用 jwt.MapClaims 强转,它绕过标准字段校验,且无法自动验证 exp、iat 等时间字段。必须定义结构体并嵌入 jwt.RegisteredClaims:type CustomClaims struct { UserID uint `json:"user_id"` Role string `json:"role"` jwt.RegisteredClaims}解析时传指针 + 显式指定算法:jwt.ParseWithClaims(tokenStr, &CustomClaims{}, keyFunc, jwt.WithValidMethods(\[\]string{jwt.SigningMethodHS256.Alg()}))若传值而非指针,或没嵌入 RegisteredClaims,ExpiresAt 就不会被自动校验密钥长度不够会静默截断,线上校验失败用 SigningMethodHS256 时,Go 的 crypto/hmac 底层要求密钥 ≥32 字节;若你硬编码 "my-secret"(仅 9 字节),本地可能"碰巧"通过,但线上环境因底层行为差异导致签名不一致,token 校验永远失败。生成合规密钥:openssl rand -base64 32,或用 make(\[\]byte, 32) 配合 rand.Read密钥绝不能硬编码:从 os.Getenv("JWT_SECRET") 读取,开发/生产环境分别配置测试时可加断言:if len(secret) 登录接口返回 token 前,务必设 ExpiresAt 并区分 access/refresh 场景不设过期时间等于发长期通行证,一旦泄露无法主动回收;而把 access token 设成 7 天,又违背最小权限原则。 Cleanup.pictures 智能移除图片中的物体、文本、污迹、人物或任何不想要的东西

相关推荐
oradh13 分钟前
Oracle Undo问题总结(两类Undo表空间不足和单个会话占用大量Undo的性能问题)
数据库·oracle
企业数字化笔记18 分钟前
固定资产财务账与实物账怎么对账?折旧快照、差异检测与SQL核对
android·数据库·sql
旋生万物18 分钟前
素数都排在等角螺线上?用螺旋数论给黎曼猜想画一张“几何画像“(附Python)
python·ai编程·数论·黎曼猜想·素数分布
用户37215742613532 分钟前
使用 Python 压缩 PDF 文件:减小图片、字体和文档内容体积
python
DBA_G33 分钟前
GBase 8a表空间多路径存储数据迁移链路适配解析
数据库·oracle
java1234_小锋36 分钟前
Tornado 6.5,全面支持 Python 3.14
数据库·python·tornado
jyOverQ42 分钟前
MySQL 事务到底是什么?ACID 四大特性与隔离级别怎么理解?
数据库·mysql
IT毕设梦工厂1 小时前
计算机毕业设计选题推荐:基于大数据的印度上市公司财务指标数据可视化分析|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hadoop·python·信息可视化·spark·课程设计·大数据毕设项目
SEO_juper1 小时前
你的服务器正在被 AI 爬虫“白嫖“带宽:2026 用日志把 Googlebot 和 AI 洪流分开算账(附脚本)
运维·人工智能·爬虫·python·chatgpt·seo
浩风祭月1 小时前
GPT Image 2.5 Sunburst还是Flare?模型选型、Python接入与成本避坑
python·aigc·openai·图像生成·gpt image 2.5