【问题标题】:Implementing JWT storage to allow browser refresh but clearing on tab/browser close实现 JWT 存储以允许浏览器刷新但在选项卡/浏览器关闭时清除
【发布时间】:2016-09-01 02:52:26
【问题描述】:

出于安全原因,我们使用 JWT 作为身份验证并将其存储为带有 HTTPONLY 的 cookie。 (https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage)。我们目前将 maxAge 设置为一个小时,并将在后续 api 请求中刷新 maxAge 时间以延长活动会话(仅当 JWT 未过期时)。

我们需要处理在浏览器关闭时从 cookie 中清除 JWT 令牌的用例,以便在公共机器上,重新打开浏览器不会恢复先前用户的会话。这怎么可能?

或者为上述用例实现 JWT 的正确方法是什么?

【问题讨论】:

    标签: html cookies jwt


    【解决方案1】:

    在浏览器关闭时清除 cookie 的已知解决方案是不对 cookie 设置过期时间,这在这个问题中进行了讨论:

    Clear cookies on browser close

    当然,如果您想获得较短的会话空闲时间,那么这是第 22 条问题,以便用户在一段时间不活动时退出。

    因此,您应该使用令牌的exp 作为会话空闲时间(您当前在 cookie 上设置的最大年龄)。如果时间超过exp,则令牌不再有效。如果令牌未过期,您可以在请求中发送一个新令牌,带有一个新的exp 值。您可以对每个请求执行此操作,或者仅当令牌在 X 分钟内到期时执行此操作。

    我希望这个答案有帮助!我在Stormpath工作,很高兴您发现我们的文章Where to Store your JWTs – Cookies vs HTML5 Web Storage很有用!

    【讨论】:

    • 谢谢罗伯特。我已经看到之前提出的建议,但是创建会话 cookie(空过期时间)的一个问题是页面的刷新似乎被认为是浏览器关闭并且会话 cookie 丢失(Chrome 浏览器)。是否有一个选项可以设置为仅在浏览器/标签关闭时清除 cookie 而不是页面刷新?
    • 我发现了我的问题。在 OSX 上,浏览器进程会继续运行,除非您明确退出浏览器。会话令牌在该过程中保持不变,因此关闭选项卡也不会删除会话令牌。 stackoverflow.com/questions/805895/…
    猜你喜欢
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多