【问题标题】:ttl not expired in JWT Auth Laravelttl 在 JWT Auth Laravel 中未过期
【发布时间】:2016-12-07 03:52:36
【问题描述】:
'ttl' => null,
'refresh_ttl' => null,

我需要令牌不会过期.. 它不起作用,它总是返回 "error": "token expired"

【问题讨论】:

  • 嗨,欢迎来到 Stack Overflow。你的问题似乎有点模糊。你想达到什么目的?你期望什么行为?你试过什么?
  • 您是否尝试将它们设置为0
  • 嗨,我需要令牌不会过期
  • 这个功能是不可能的。要么提供很长的时间,即。 30 * 60 * 60 或使用刷新令牌。遗憾的是,它也会过期。
  • @Sameer Shaikh:为什么不可能?没有什么能阻止我们创建生命周期很长的 JWT 或不会过期的 JWT。

标签: laravel authentication token jwt


【解决方案1】:

这个问题非常模糊,因为我们不知道哪个库/组件用于生成 Jot,因此我们无法知道过期声明的管理方式。 一般来说,要获得不会过期的 Jot,此类声明(expttlrefresh_ttl)不应成为有效负载的一部分。

以下令牌将在 3600 秒后过期。

{
    'iss': 'my-service'
    'aud': 'your-service'
    'sub': 'my-client'
    'ttl': 3600
}

以下令牌永远不会过期。

{
    'iss': 'my-service'
    'aud': 'your-service'
    'sub': 'my-client'
}

【讨论】:

    【解决方案2】:

    在文件 vendor/tymon/jwt-auth/config/config.php 中更改行

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

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

    同时删除此行中的exp

     'required_claims' => [
            'iss',
            'iat',
            'exp',
            'nbf',
            'sub',
            'jti',
        ],
    

    为我工作

    【讨论】:

    • 您不应更改供应商目录中的任何内容
    【解决方案3】:

    如果您不想有条件地使令牌过期。

    1. 从 config/jwt.php 中的必需声明中删除 exp
    2. 添加此代码 sn-p 以在控制器内将 TTL 设置为空。
    if ( // your condition ) {
        $this->guard()->setTTL(null);
    }
    

    【讨论】:

      【解决方案4】:

      在 JWTAuth 中登录不过期的步骤:

      1. 在配置文件夹中打开jwt.php(如果它不可用,则在项目中使用此命令发布jwt.php 文件==>

      php artisan vendor:publish --provider="Tymon\JWTAuthProviders\JWTAuthServiceProvider" )

      1. 改变

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

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

      1. 删除此行中的 exp:-

      'required_claims' => [ 'iss', 'iat', 'exp', 'nbf', 'sub', 'jti', ],

      【讨论】:

        猜你喜欢
        • 2020-08-05
        • 1970-01-01
        • 2018-02-11
        • 2019-08-08
        • 2019-05-22
        • 2018-06-26
        • 2014-12-28
        • 2019-07-04
        • 2018-10-06
        相关资源
        最近更新 更多