JWT/Laravel 延长令牌有效期
Posted
技术标签:
【中文标题】JWT/Laravel 延长令牌有效期【英文标题】:JWT/Laravel Extend token expiration lifetime 【发布时间】:2017-02-07 10:48:05 【问题描述】:我使用 JWT 来管理用户对我们 API 系统的访问。我面临的问题是令牌在几分钟后到期。如何使 JWT 令牌过期,使其仅在用户手动注销时过期。
谢谢。
【问题讨论】:
【参考方案1】:在数组中添加“exp”作为“尝试”方法的第二个参数。这个'exp'是时间戳。 例如:
$token=JWTAuth::attempt(
['email'=>$email,'password'=>$password],
['exp' => Carbon::now()->addweek()->timestamp]
);
【讨论】:
【参考方案2】:在 laravel 5.3 中,我只是在 config/jwt.php 中注释该行,即..,
// ttl => 60
现在不存在生存时间,令牌过期是生命周期。
为了使令牌无效,请在 logout() 中使用以下代码,即 JWTAuth::invalidate(JWTAuth::getToken());
【讨论】:
【参考方案3】:您需要存储令牌服务器端的到期时间,而不是在令牌内部。这意味着您没有在令牌中设置 exp 键。例如,您可以将具有过期时间的 jti 存储在数据库中。当收到令牌进行身份验证时,您可以验证令牌,然后根据存储在数据库中的 jti 以及预期的生命周期和当前时间检查令牌的最后出现日期。如果令牌仍然有效,则将 jti 的最后看到日期重置为当前时间。
【讨论】:
以上是关于JWT/Laravel 延长令牌有效期的主要内容,如果未能解决你的问题,请参考以下文章
自offline_access弃用以来如何延长访问令牌的有效性
Laravel Passport:延长 Token 的生命周期