【问题标题】:Passport.js - use same token for different serverPassport.js - 对不同的服务器使用相同的令牌
【发布时间】:2018-01-04 17:05:32
【问题描述】:
我正在使用 passport.js 和 MongoDB 进行用户登录和 postAPI 身份验证。但是,每当我将节点服务器部署到另一个 AWS 实例时,我都需要完成注册过程、登录并获取新令牌。
我知道我可以从 MongoDB 中看到保存的用户及其 jwt 令牌。无论如何我可以复制令牌,并且在初始化新数据库时,默认保存相同的用户名-jwttoken 对,所以我可以使用相同的令牌字符串(不带密码,虽然它更容易完成)来传递护照认证测试?
谢谢!
【问题讨论】:
标签:
javascript
node.js
mongodb
amazon-web-services
passport.js
【解决方案1】:
听起来您的部署过程涉及拆除所有内容(应用程序和 MongoDB)并从零开始重建,可能使用一些种子数据,但没有 AWS 实例中的任何“实时”数据。这里有几个想法:
将所有数据从旧 MongoDB 实例复制到新实例,作为部署过程的一部分。这将确保用户出现在新实例上,并且(应该)确保用户不必再次经历注册过程。我对 MongoDB 不太熟悉,所以我不知道该怎么做,但我确信有办法 - 也许您可以将数据文件从一个复制到另一个?
使用两台服务器设置您的环境:MongoDB 服务器和应用程序服务器。通过这种方式,您可以拆除您的应用程序并仅为该应用程序创建一个新的 AWS 实例,而无需接触您的 MongoDB 服务器。只需更新新应用程序实例中的 MongoDB 连接配置,使其指向您一直在使用的同一个 MongoDB 服务器。
如果您有一个非常小的应用程序而没有太多数据,则第一个选项更合适。如果您的数据库变得太大,您将在部署期间经历长时间的停机,因为您关闭应用程序,将数据从旧的 Mongo 实例中复制出来,将数据复制到新的 Mongo 实例中,然后将应用程序恢复原状起来。
第二种选择可能更好,尽管它确实需要一些网络和保护 MongoDB 的知识,以便只有您的应用程序可以访问您的数据。