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