如何在服务器发送的reactjs中获取JWT cookie

Posted

技术标签:

【中文标题】如何在服务器发送的reactjs中获取JWT cookie【英文标题】:How to get JWT cookie in reactjs which is send by the server 【发布时间】:2020-02-19 12:17:44 【问题描述】:

我在客户端使用 reactjs。服务器在认证后发送cookie。

所以我的问题是如何在服务器发送的 react-js 中获取 JWT cookie 以及如何代表这个 cookie 管理令牌

【问题讨论】:

您可以使用document.cookie 获取cookie 并从那里开始。您需要一个 JWT 库来解析令牌以获取其中的信息。您将无法验证令牌在前端是否有效,但这应该没问题,具体取决于您的用例;这是一个用于在前端解码 JWT 令牌的库:github.com/auth0/jwt-decode 需要检查cookie是否为httpOnly,如果是,则客户端无法访问cookie。 @kraf,为了首先解码它,我需要获取 cookie。我不想解码cookie。而document.cookie 什么也没返回。 @HarryChang,那么我该如何设置用户已登录并设置了它的令牌。 【参考方案1】:

通常情况下,客户端会有一个API来获取当前用户的数据,例如,向/api/me发送GET请求以获取用户数据 username: 'harry830622', /* email, gender, etc. */

在您的场景中,JWT 在 cookie 中,因此它会在浏览器发出的每个请求中自动发送到服务器。 服务端收到请求后,会先验证cookie中的JWT,如果JWT正确,则返回数据,否则,抛出401 UNAUTHORIZED的错误。

因此,要检查用户是否登录,只需向 API 发送 GET 请求,以查看响应是否包含有效数据。

【讨论】:

我会试试你的解决方案。谢谢

以上是关于如何在服务器发送的reactjs中获取JWT cookie的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ReactJS 上使用 JWT 令牌注销

如何从 NextJS / ReactJS 中的 JWT cookie 获取用户信息

ReactJS 从 API fetch 中获取令牌字符串

ReactJS 和 DRF:如何将 JWT 令牌存储在 HTTPonly cookie 中?

在 reactjs 中使用 JWT auth 处理登录

如何在刷新页面上存储在本地存储中的 reactjs 中使用 JWT 进行身份验证?