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