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

设置JWT终身有效后出现「JWT payload不含必要声明」错误求助

解决JWT设置永不过期时报"缺少必要claims"的问题

你遇到的问题是因为Tymon的JWTAuth组件默认要求JWT的payload里必须包含exp(过期时间)这个标准声明字段。当你把ttl设为null后,生成Token时不会自动添加exp字段,导致验证阶段触发TokenInvalidException错误。

解决步骤如下:

  • 修改必填声明配置
    打开config/jwt.php文件,找到required_claims配置数组,把'exp'项移除或者注释掉,让它不再是必填声明:

    'required_claims' => [
        'iss',
        'iat',
        // 'exp', // 取消exp的必填要求
        'nbf',
        'sub',
        'jti',
    ],
    
  • 确认Token生成逻辑
    保持你之前的ttl配置不变:

    'ttl' => env('JWT_TTL', null),
    

    这样生成Token时就不会自动注入exp字段。

  • 清除配置缓存(可选但建议)
    如果你的项目启用了配置缓存,运行以下命令刷新缓存:

    php artisan config:clear
    

完成以上操作后,生成的Token就不会包含过期时间声明,验证器也不会再检查该字段,就能实现永不过期的Token了。注意:永不过期的Token存在安全风险,一旦泄露会被长期滥用,建议结合业务场景添加其他安全机制,比如维护Token黑名单、支持手动失效等。

内容的提问来源于stack exchange,提问作者Wakil Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:22:38