出于安全原因,我们将JWT用作身份验证,并使用HTTPONLY将其存储为cookie。(https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage)。我们目前在上面设置一个maxAge一个小时,并将在后续的api请求上刷新maxAge时间以延长活动会话(仅当JWT未过期时)。
我们需要处理以下用例:在浏览器关闭时,已从cookie中清除了JWT令牌,以便在公共计算机上重新打开浏览器不会恢复先前用户的会话。这怎么可能?
还是针对上述用例实现JWT的正确方法是什么?
在浏览器关闭时清除cookie的已知解决方案是不对cookie设置过期时间,此问题对此进行了讨论:
当然,如果您想拥有较短的会话空闲时间,则这是一个陷阱22,以便在用户闲置一段时间后将其注销。
因此,您应该使用exp
令牌的来作为会话空闲时间(您当前在Cookie上设置的最长期限)。如果时间过去了exp
,令牌将不再有效。如果令牌未过期,则可以在请求中发送带有新exp
值的新令牌。您可以对每个请求执行此操作,或者仅在令牌在到期后的X分钟内执行此操作。
希望这个答案对您有所帮助!我在Stormpath工作,很高兴您发现我们的文章“将JWT存储在哪里– Cookies与HTML5 Web存储”非常有用!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句