【发布时间】:2016-08-31 18:13:25
【问题描述】:
我正在使用 Laravel 5.2 和 tymondesigns/jwt-auth。
如果用户在没有注销的情况下再次登录,是否可以将旧令牌列入黑名单?我很好奇旧令牌的安全性。
关于如何改进移动设备上的“始终登录”的任何建议,因为我目前使用 Laravel 作为 API。
我当前的配置是:ttl = 1 小时 & refresh_ttl = 2 周
【问题讨论】:
标签: api laravel laravel-5.2 jwt
我正在使用 Laravel 5.2 和 tymondesigns/jwt-auth。
如果用户在没有注销的情况下再次登录,是否可以将旧令牌列入黑名单?我很好奇旧令牌的安全性。
关于如何改进移动设备上的“始终登录”的任何建议,因为我目前使用 Laravel 作为 API。
我当前的配置是:ttl = 1 小时 & refresh_ttl = 2 周
【问题讨论】:
标签: api laravel laravel-5.2 jwt
您可以在用户第一次登录时创建一个表来存储令牌。
当该用户再次登录时,您会(从您的表中)获取旧令牌,然后将旧令牌列入黑名单,使用登录后立即生成的新令牌更新表。
【讨论】:
其实@Jeff 的回答可能会解决问题。我需要使用jwt.refresh 中间件。
我的 JWT 黑名单不起作用,因为我使用 array 作为 CACHE_DRIVER
我已经测试了将其恢复为file,因为CACHE_DRIVER 和jwt.refresh 是有效的,旧令牌应该被列入黑名单。
我将此标记为答案。谢谢你,杰夫。
【讨论】:
您可以使用jwt.refresh 中间件,它会发回一个新令牌作为响应头。如果您启用了黑名单,旧令牌将立即被列入黑名单。只需在您的登录路径中包含jwt.refresh,然后确保捕获响应标头并更新您的本地密钥。然后你可以让你的ttl和refresh_ttl无限制(即60*60*24*365*10)
【讨论】:
jwt.refresh,我可以看到每个请求都在刷新令牌,但旧令牌并未列入黑名单。我检查了我的 jwt 配置文件,黑名单已经启用。有什么想法吗?
'blacklist_grace_period' => 0,