【问题标题】:jwt served via httponly cookie with someway to find out is-logged-injwt 通过 httponly cookie 提供服务,以某种方式找出 is-logged-in
【发布时间】:2020-07-04 16:51:56
【问题描述】:

在构建 javascript SPA(单页应用程序)时,我需要根据用户是否登录以不同方式显示一些页面。

Auth 由 JWT 处理,JWT 通过 httpOnly cookie 和安全标头提供服务。

这使 SPA javascript 无法访问 cookie,这反过来意味着我不知道用户是否已登录。

我确实查看了一些有关如何解决此问题的帖子,并找到了一些建议,例如

  • 发送另一个不是 httpOnly 的 cookie,带有一些标志,如会话 ID 或带有过期日期的用户 ID,在客户端 JS 中,使用该 cookie 来查看用户是否已通过身份验证。

  • 在 API 服务器上创建一个端点,例如 /is-logged-in 并从 JS 进行 http 调用,以在显示页面之前检查用户是否经过身份验证。

  • 在没有 cookie 的情况下将 JWT 存储在本地(由于安全原因以及我必须编写大量代码来缓解各种可能的窃取攻击,显然不可行)

我参加 SPA 派对迟到了,但我确信这一定是一个长期解决的问题。我猜我看不到明显的东西。

请指点我正确的方向。

为了完整起见,这里有一些未回答、半回答的相关帖子

【问题讨论】:

    标签: javascript cookies jwt


    【解决方案1】:

    你基本上有两种选择:

    保存用户使用第二个过期的非 http cookie 登录

    优点

    • 无需额外的 HTTP 请求
    • 在您知道用户是否登录之前没有延迟

    缺点

    • 您需要使两个 cookie 的到期和续订保持同步
    • 如果您的 cookie 由于边缘情况而不再同步,您需要检测它并采取相应措施

    使用一个 HTTP 请求来告诉你用户是否登录

    优点

    • 不易出错
    • 无需更改后端

    缺点

    • 您仍然需要检测用户在使用应用程序时是否不再登录

    【讨论】:

      猜你喜欢
      • 2021-09-21
      • 1970-01-01
      • 2020-06-10
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 2013-01-04
      相关资源
      最近更新 更多