如何在Node.js / Express中生成,存储和使用访问令牌?

时间:2019-01-31 04:54:59

标签: node.js express

我是使用Nodejs / Express进行后端开发的新手,并且正在创建一个API,注册用户将可以使用唯一的访问令牌向其提出请求。

我已经在使用JWT(JSON Web令牌)进行用户身份验证,并且在阅读了许多有关JWT的教程之后,我没有找到任何解释来说明是否可以将JWT用作访问令牌(而不是作为身份验证令牌)或者是否存在另一种生成此类令牌的解决方案。

因此,基本上,我对如何生成和使用访问令牌有一些疑问:

  1. 我可以将JWT用作访问令牌吗?安全吗?还有更常用的解决方案吗?
  2. 我应该如何存储访问令牌?我可以只保存在数据库中的用户模型中,这样当我收到请求时就比较它们是否相等?
  3. 发出请求时,我应该使用HTTP授权标头传递令牌还是最好在URL中传递令牌(类似于Google Maps API:https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap)?

1 个答案:

答案 0 :(得分:0)

所以这是一个相当广泛的问题,因为它实际上取决于您的应用程序和您想要的安全性。

如果您已经在为登录用户使用JWT令牌,并确保它们已通过身份验证,那就太好了。

现在有很多方法可以确保以安全的方式对用户进行身份验证。

您可以在JWT内设置一个过期密钥,因此它将限制为1个小时,2个小时,每周一次。

如果您希望用户只能登录一次,则需要更深入地了解如何管理令牌。

关于用户应该在头或GET参数中传递JWT令牌的位置。因此,从安全角度看,两者都是相似的。但是,当您将jwt放入网址时,网址长度是有限制的(我认为是1024个字符)

对于您对访问令牌的特定疑问,请不确定您打算如何使用它们。

但是,如果仅是为了提供其他服务来对您的api进行操作,那么最好将这些access_tokens存储在本地,以防万一您想要使密钥无效,您可以轻松地做到这一点。