首页 > 解决方案 > jwt 通过 httponly cookie 提供服务,以某种方式找出 is-logged-in

问题描述

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

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

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

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

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

请指出正确的方向。

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

标签: javascriptcookiesjwt

解决方案


你基本上有两种选择:

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

优点

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

缺点

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

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

优点

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

缺点

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

推荐阅读