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

时间:2020-08-01 15:44:46

标签: node.js jwt storage jwt-auth express-jwt

我是初学者,最近开始学习有关授权和认证的信息。

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

我观看了一些视频,了解到您可以通过访问标头来访问创建的令牌:(要求标头) Video I got the information from

code

现在我正在处理来源和 存储的问题。它是html标头还是特定的cookie。我知道有3种存储(本地存储,会话存储和cookie存储),但是存储在这3种存储中。

我真的很困惑

2 个答案:

答案 0 :(得分:3)

您是谁选择存储它的人:成功通过身份验证后,JWT应该发送给客户端并存储在客户端,因此,正如您所说的,您应该在以下三种解决方案之间进行选择:

1- LocalStorage

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

3- SessionStorage:此选项被排除,因为一旦用户关闭窗口,除非您希望这样做,否则存储在此处的数据将丢失。

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

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

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

然后,您的后端应该知道如何再次从标头/正文中提取它。

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

答案 1 :(得分:1)

简单来说,在生成令牌后,您可以通过Cookie(最好是仅使用HTTP的cookie,如果要避免XSS攻击)将其作为响应发送,或者仅在响应正文中发送,之后存储在localStorage中(或cookie(如果您选择使用cookie的话)),并随后发送带有Authorization标头的HTTP请求,其标头为bearer <token>,其中jwt存储在localStorage中。 / p>