我是初学者,最近开始学习有关授权和认证的信息。
所以我遇到了 JWT ,并开始寻找如何在 node js 中实现它的教程。 显然有一个用于nodejs的jwt中间件,名为“ jsonwebtoken”。
我观看了一些视频,了解到您可以通过访问标头来访问创建的令牌:(要求标头) Video I got the information from
现在我正在处理
来源和 存储的问题。它是html标头还是特定的cookie。我知道有3种存储(本地存储,会话存储和cookie存储),但是存储在这3种存储中。我真的很困惑
答案 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>