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弃用以来如何延长访问令牌的有效性

在 jwt-auth laravel 中获取自定义声明

Laravel Passport:延长 Token 的生命周期

验证授权和未授权用户 (JWT ReactJS-Laravel)

如何在 jwt laravel 5.3 中处理令牌到期?