如何在服务器发送的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的主要内容,如果未能解决你的问题,请参考以下文章
如何从 NextJS / ReactJS 中的 JWT cookie 获取用户信息