ttl 在 JWT Auth Laravel 中未过期

Posted

技术标签:

【中文标题】ttl 在 JWT Auth Laravel 中未过期【英文标题】:ttl not expired in 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。 【参考方案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】:

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

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

【讨论】:

【参考方案4】:

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

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

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

    改变

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

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

    删除此行中的 exp:-

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

【讨论】:

以上是关于ttl 在 JWT Auth Laravel 中未过期的主要内容,如果未能解决你的问题,请参考以下文章

laravel jwt 更改令牌过期时间

我不明白 JWT 刷新令牌的行为 (LARAVEL)

JWT - 第二次刷新后的 TOKEN_EXPIRED

Laravel 6 中未定义 Artisan 命令“make:auth”

Auth0 Laravel 获取 JWT 令牌

如何使用 jwt-auth 在 Laravel 中正确设置 JWT 机密?