You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言JWT认证时VerifyToken解析token返回nil该如何解决

问题修复方案

存在的问题及对应解决方法

  • 语法拼写错误
    你在CreateToken函数生成刷新token的逻辑中,定义的claims变量名为rfClaims,但给user_id赋值时错误写成了fClaims["user_id"] = userId,变量名缺少前缀r,该错误会直接导致编译失败,将其修改为rfClaims["user_id"] = userId即可修复。
  • .env配置未正确加载
    Go语言默认不会自动读取项目下的.env文件,你需要手动引入加载工具才能让os.Getenv读取到对应配置:
    1. 安装dotenv加载库:
    go get github.com/joho/godotenv
    
    1. 在main函数启动的最开头添加加载逻辑:
    import "github.com/joho/godotenv"
    
    func main() {
        err := godotenv.Load()
        if err != nil {
            log.Fatalf("加载.env文件失败: %v", err)
        }
        // 后续原有逻辑
    }
    
  • 密钥值存在多余字符
    你.env文件中的配置值带了双引号,部分版本的dotenv加载工具会把引号也识别为值的一部分,导致签名和验签使用的密钥不一致。可以在启动时打印密钥确认内容是否符合预期:
    fmt.Println("ACCESS_SECRET值为:", os.Getenv("ACCESS_SECRET"))
    
    如果输出包含多余的双引号或者前后空格,将.env文件的配置修改为不带引号的格式即可:
    ACCESS_SECRET = jdnfksdmfksd
    REFRESH_SECRET = mcmvmkmsdnfsdmfdsjf
    
  • 缺少错误定位日志
    你目前只打印了token字符串,没有打印jwt解析的错误信息,在VerifyToken函数的错误分支添加错误打印可以快速定位具体问题:
    if err != nil {
        fmt.Println("token解析错误:", err) // 新增该行打印错误详情
        return nil, err
    }
    

内容的提问来源于stack exchange,提问作者Musa Abdulhameed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:36:03