httpOnly cookie:检查用户是否在react-app中登录

yes*_*day 7 cookies node.js reactjs

我有一个 React 应用程序和一个 NodeJS 服务器。我设置了一个包含 JWT 的 httpOnly-cookie 以进行身份​​验证。这有效。问题是:我需要一些逻辑客户端来检查用户是否登录。当用户登录时,我可以将此“状态”存储在内存中(例如 useState),但是当浏览器重新加载时,此状态消失了(虽然 cookie 仍然存在)。

我尝试使用js-cookie但显然这不起作用,因为它是一个 httpOnly cookie。

在浏览器中打开 React 应用程序时,如何检查 - 无需向我的服务器执行(测试) axios 请求 - 用户是否已登录?

编辑:这个问题 的答案建议将令牌存储在 LocalStorage 中,但其他资源(如这个问题答案中的讨论)表示 cookie 是可行的方法。

需要明确的是,我不需要直接访问cookie 中的令牌,cookie 是随每个 axios 请求 ( {withCredentials: true}) 一起发送的,并且它按预期工作。但我只需要知道cookie是否已设置(因此用户已登录)。

Ast*_*nca 4

对于这种情况可以有多种方法。我认为你能做什么。

1 - 您可以发送一个http请求来检查JWT在初始应用程序加载时以及每当应用程序重新加载时是否有效(基本上相同),然后在应用程序内保留一些身份验证状态(Context Api或Redux),这样您就可以控制路线等

2 - 确保每当 JWT 过期时,您都会清除 cookie,并且每当客户端收到 401 时,您都会刷新您拥有的任何经过身份验证的状态,并将用户重定向到登录页面或任何不需要身份验证的页面。