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,此类声明(exp
、ttl
或 refresh_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 中未过期的主要内容,如果未能解决你的问题,请参考以下文章