此示例中的 JWT 令牌存储在哪里?

Where are JWT tokens stored in this example?

我是初学者,最近开始学习授权和认证。

所以我遇到了 JWT 并开始寻找如何在 node js 中实现它的教程。 显然有一个名为“jsonwebtoken”的用于 nodejs 的 jwt 中间件。

我看过一些关于它的视频,了解到您可以通过访问 header 来访问创建的令牌:(req.headers) Video I got the information from

code

现在我正在处理“header”来自 的问题,已存储。它是 html header 还是特定的 cookie。我知道有 3 个存储(本地、session 和 cookie 存储)但是它存储在这 3 个中的哪一个中。

我真的很迷茫

你是选择存储位置的人:身份验证成功后,JWT 将被发送到客户端并存储在客户端,所以正如你所说,你应该在 3 种解决方案之间进行选择:

1- 本地存储

2- Cookie:容易受到 csrf 攻击。

3- SessionStorage:此选项被排除在外,因为一旦您的用户关闭其 window,存储在这里的数据将丢失,除非您想要这种行为。

存储令牌后,您可以再次选择发送方式:

1- 在 header(授权)中发送,例如,

2- 直接在请求 body 中发送(例如 JSON)。

您的后端应该知道如何从 header / body 中提取它,再次您的选择。

请记住,您需要在每次向保护区发出请求时发送它,这样每次您的后端收到对保护区的请求时,您都在进行无状态身份验证。

简单来说,生成令牌后,您可以通过 cookie(如果您想避免 XSS 攻击,最好是 http-only cookie)将其作为响应发送,或者直接在响应中发送 body,之后它存储在 localStorage(或 cookie,如果您选择使用它),并在随后的 HTTP 请求中发送 Authorization header,其值为 bearer <token>],jwt存储在localStorage中的位置。