从节点访问JWT的最佳方式是什么?

What is the best way to access the JWT from node?

本文关键字:方式 是什么 最佳 节点 访问 JWT      更新时间:2023-09-26

我已经使用Node.js实现了JWT身份验证。当用户登录时,Node.js签名/创建JWT并将其发送回来。之后,它被存储在localStorage中。现在,这可能是我错的地方,但是…为了继续前进,我使用了express路由器,并且在路由器代码(显然是在节点级别)中,我希望能够访问令牌(在localStorage中),以便我可以调用API以获取进一步的数据。然而,我刚刚意识到localStorage在客户端,节点/express/路由器不识别localStorage。所以我被困住了。显然,我做了一些根本性的错误……我不需要从快速路由器文件中访问localStorage。也许,我真的应该从客户端而不是从express路由器文件中调用API。

/方向的提示吗?

localstorage不是保存令牌的好方法。您应该将令牌保存在cookie中,并在需要时使用它。

的例子:

new Cookies(req,res).set('access_token',token,{
  httpOnly: true,
  secure: true      // for your production environment
});

,然后读:

var token = new Cookies(req,res).get('access_token');

每次向服务器端发出API请求时,都需要发送存储在客户端的JWT。

https://jwt.io/introduction/向下滚动到部分JSON Web令牌是如何工作的? JWT应该在API调用的头中发送,格式为:Authorization: Bearer <token>

如何做到这一点取决于您将如何准确地将HTTP请求发送到API,但它应该在任何方面都相当简单。你可以在这个链接中找到如何在angular $http请求中添加header:https://docs.angularjs.org/api/ng/service/http美元

然后由每个经过身份验证的快递路由检查报头,将JWT拉出来,确保它是有效的,然后继续处理请求(如果JWT无效,则停止请求)。