Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 本例中JWT令牌存储在哪里?_Node.js_Jwt_Storage_Jwt Auth_Express Jwt - Fatal编程技术网

Node.js 本例中JWT令牌存储在哪里?

Node.js 本例中JWT令牌存储在哪里?,node.js,jwt,storage,jwt-auth,express-jwt,Node.js,Jwt,Storage,Jwt Auth,Express Jwt,我是一个初学者,最近开始学习授权和身份验证 因此,我遇到了JWT,并开始寻找如何在节点js中实现它的教程。 显然,有一个用于NodeJ的jwt中间件称为“jsonwebtoken” 我观看了一些关于它的视频,了解到您可以通过访问标题:(req.headers)来访问创建的令牌 现在我要处理的问题是该“头”来自哪里,以及它存储在哪里。它是一个html头还是一个特殊的cookie。我知道有3个存储(本地、会话和cookie存储),但它存储在这3个存储中的哪一个 我真的很困惑您是选择存储位置的人:

我是一个初学者,最近开始学习授权和身份验证

因此,我遇到了JWT,并开始寻找如何在节点js中实现它的教程。 显然,有一个用于NodeJ的jwt中间件称为“jsonwebtoken”

我观看了一些关于它的视频,了解到您可以通过访问标题:(req.headers)来访问创建的令牌

现在我要处理的问题是该“头”来自哪里,以及它存储在哪里。它是一个html头还是一个特殊的cookie。我知道有3个存储(本地、会话和cookie存储),但它存储在这3个存储中的哪一个


我真的很困惑

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

1-本地存储

2-Cookie:易受csrf攻击

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

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

1-以标题形式发送(授权),例如

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

然后,您的后端应该知道如何从标题/正文中再次提取您的选择


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

简单地说,生成令牌后,您可以通过cookie将其作为响应发送(如果您希望避免XSS攻击,最好只使用http cookie),或者只在响应体中发送,然后将其存储在localStorage中(如果您选择使用cookie,则使用cookie),并使用
授权
头发送后续HTTP请求,其值为
承载
,jwt存储在localStorage中的位置。

非常感谢您花时间帮助我。但我究竟如何在HTTP头中对客户端做出这些响应?非常感谢您花时间帮助我。但是,我到底应该在http头中对客户端做出哪些响应呢?对客户端的响应在响应体中。后续的请求通过头发送。这取决于您用于从客户端发送请求的内容(XHR/fetch/axios),您将有一种向请求添加头的方法。一种好的方法是设置拦截器(如果您使用axios)。