在JWT Auth Laravel中ttl未过期

在JWT Auth Laravel中ttl未过期,laravel,authentication,token,jwt,Laravel,Authentication,Token,Jwt,我需要令牌不过期。。 它不起作用,总是返回“error”:“token expired”这个问题很模糊,因为我们不知道使用哪个库/组件生成Jot,所以我们无法知道过期声明的管理方式。 一般来说,为了获得未过期的Jot,此类声明(exp、ttl或refresh\u ttl)不应成为有效负载的一部分 以下令牌将在3600秒后过期 'ttl' => null, 'refresh_ttl' => null, 以下令牌永远不会过期 { 'iss': 'my-service'

我需要令牌不过期。。
它不起作用,总是返回“error”:“token expired”

这个问题很模糊,因为我们不知道使用哪个库/组件生成Jot,所以我们无法知道过期声明的管理方式。 一般来说,为了获得未过期的Jot,此类声明(
exp
ttl
refresh\u ttl
)不应成为有效负载的一部分

以下令牌将在3600秒后过期

'ttl' => null,
'refresh_ttl' => null,
以下令牌永远不会过期

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

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

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

'ttl' => env('JWT_TTL', 60),
同时删除此行中的
exp

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

如果您不想有条件地使令牌过期,则适用于my

  • 从config/jwt.php中的必需声明中删除exp
  • 添加此代码段以在控制器中将TTL设置为null

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

  • 在config文件夹中打开
    jwt.php
    (如果不可用,则在project==>
  • php artisan供应商:publish--provider=“Tymon\JWTAuthProviders\JWTAuthServiceProvider”)

  • 改变
  • 'ttl'=>env('JWT_ttl',60),

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

  • 删除此行中的exp:-

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

    您好,欢迎使用堆栈溢出。你的问题似乎有点含糊。你想完成什么?你期待什么样的行为?您尝试了什么?您尝试过将它们设置为
    0
    ?您好,我需要令牌未过期此功能不可用。要么提供很长的时间,即30*60*60,要么使用刷新令牌。遗憾的是,这也将过期。@Sameer Shaikh:为什么不可能?没有任何东西阻止我们创建一个非常长的生命周期JWT或一个不会过期的JWT。您不应该更改供应商目录中的任何内容
     'required_claims' => [
            'iss',
            'iat',
            'exp',
            'nbf',
            'sub',
            'jti',
        ],
    
    if ( // your condition ) {
        $this->guard()->setTTL(null);
    }