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

时间:2016-10-26 15:14:16

标签: javascript angularjs node.js html5

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

任何提示/指示?

2 个答案:

答案 0 :(得分:-2)

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');

答案 1 :(得分:-2)

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

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

如何执行此操作取决于您将HTTP请求发送到API的具体程度,但在任何方面都应该非常简单。您可以在此链接中找到有关如何将Headers添加到角度$ http请求的信息: https://docs.angularjs.org/api/ng/service/ $ HTTP

然后查看每个经过身份验证的快速路由以检查标头,将JWT拉出,确保它有效,然后继续执行请求(如果JWT是,则暂停它无效的)。