出于安全原因,我们使用JWT作为我们的身份验证并将其存储为带有HTTPONLY的cookie。 (https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage)。我们当前正在为其设置一个小时的maxAge,并将刷新后续api请求的maxAge时间以延长活动会话(仅当JWT未过期时)。
我们需要处理在浏览器关闭时从cookie中清除JWT令牌的用例,这样在公共机器上重新打开浏览器就不会重新恢复以前用户的会话。这怎么可能?
或者为上述用例实现JWT的正确方法是什么?
答案 0 :(得分:2)
在浏览器关闭时清除Cookie的已知解决方案是不在Cookie上设置过期时间,这在此问题中讨论:
Clear cookies on browser close
当然,如果您希望短暂的会话空闲时间,这是一个问题22,这样如果用户暂时不活动就会被注销。
因此,您应该使用令牌的exp
作为会话空闲时间(您当前在cookie上设置的最大年龄)。如果时间超过exp
,则令牌不再有效。如果令牌未过期,您可以在请求上发送新令牌,并使用新的exp
值。您可以为每个请求执行此操作,或仅在令牌过期X分钟内时执行此操作。
我希望这个答案有所帮助!我在Stormpath工作,我很高兴你发现我们的文章Where to Store your JWTs – Cookies vs HTML5 Web Storage很有用!