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

如何在php-open-source-saver/jwt-auth中移除JWT的exp过期字段

彻底移除JWT令牌中exp字段的实现方法

问题原因

config/jwt.php中被注释的exp配置项属于必填校验声明列表,仅作用于JWT解码校验环节:如果列表中存在某字段,解码时会强制要求token携带该字段,否则抛出校验异常。该配置和JWT生成阶段自动注入哪些字段的逻辑完全独立,因此仅注释exp无法阻止该字段被自动写入生成的token。

具体操作步骤

以Laravel生态最常用的tymon/jwt-auth包为例,按以下配置即可彻底移除exp字段:

  1. 保留现有必填声明列表的修改,即注释掉exp项,避免解码时因缺少exp抛出校验异常:
    'required_claims' => [
        'iss',
        'iat',
        // 'exp',
        'nbf',
        // 'sub',
        'jti',
    ],
    
  2. 关闭自动生成过期时间的逻辑,两种方式二选一即可:
    • 全局生效:直接修改config/jwt.php中的ttl配置为null,后续所有生成token的逻辑都不会自动注入exp字段:
      'ttl' => null,
      
    • 单次生成生效:如果只需要部分场景生成无exp的token,在构建payload时手动将TTL设为null即可:
      // 构建自定义payload时关闭TTL自动计算
      $payload = JWTFactory::setTTL(null)->make($yourCustomPayloadData);
      $token = JWTAuth::encode($payload)->get();
      

注意事项

  • 构建自定义payload数据时,不要主动传入exp键,否则无论如何配置该字段都会被写入token
  • 配置完成后可以生成测试token,base64解码payload段确认无exp字段即配置生效

内容的提问来源于stack exchange,提问作者Niraj Shrestha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 04:36:26