在构建 javascript SPA(单页应用程序)时,我需要根据用户是否登录以不同方式显示某些页面。
身份验证由 JWT 处理,它通过 httpOnly cookie 和安全标头提供服务。
这使得 cookie 无法从 SPA javascript 访问,这反过来意味着我不知道用户是否已登录。
我确实查看了一些有关如何解决此问题的帖子,并找到了一些建议,例如
发送另一个不是 httpOnly 的 cookie,带有一些标志,如会话 ID 或具有到期日期的用户 ID,并在客户端 JS 中使用该 cookie 来查看用户是否已通过身份验证。
在 API 服务器上创建一个端点,例如/is-logged-in并从 JS 进行 http 调用以在显示页面之前检查用户是否已通过身份验证。
在没有 cookie 的情况下在本地存储 JWT(由于安全原因和我必须编写的代码量来减轻各种可能的窃取攻击,这显然是不行的)
我参加 SPA 派对迟到了,但我相信这必须是一个长期解决的问题。我猜我看不到明显的东西。
请指出我正确的方向。
为了完整起见,这里有一些未回答的、半回答的相关帖子