Passport.js - 为不同的服务器使用相同的令牌

时间:2017-07-28 14:59:51

标签: javascript node.js mongodb amazon-web-services passport.js

我使用passport.js和MongoDB进行用户登录和postAPI身份验证。但是,每当我将节点服务器部署到另一个AWS实例时,我都需要完成注册过程,登录并获取新令牌。

我知道我可以从MongoDB中看到已保存的用户及其jwt令牌。无论如何我都可以复制令牌,并且在初始化新数据库时,默认保存相同的username-jwttoken对,所以我可以使用相同的令牌字符串(不是用密码,虽然更容易完成)通过护照认证测试?

谢谢!

1 个答案:

答案 0 :(得分:2)

听起来您的部署过程涉及撕毁所有内容(应用程序和MongoDB)并且从零重建,可能包含一些种子数据,但AWS实例中没有任何“实时”数据。以下是一些想法:

  1. 作为部署过程的一部分,将旧MongoDB实例中的所有数据复制到新实例。这将确保用户出现在新实例上,并且(应该)确保用户不必再次完成注册过程。我不太熟悉MongoDB,所以我不知道怎么做,但我确定有办法 - 也许你可以将数据文件从一个复制到另一个?

  2. 使用两台服务器设置您的环境:MongoDB服务器和应用程序服务器。这样,您可以拆除应用程序并为应用程序创建新的AWS实例,而无需触及MongoDB服务器。只需更新新应用程序实例中的MongoDB连接配置,即可指向您一直使用的同一MongoDB服务器。

  3. 如果您的应用程序非常小而没有太多数据,则第一个选项更合适。如果您的数据库太大,您将在部署期间遇到长时间的停机,因为您将应用程序关闭,将数据复制出旧的Mongo实例,将数据复制到新的Mongo实例中,然后将应用程序恢复起来。

    第二种选择可能是更好的选择,虽然它确实需要一些网络知识和保护MongoDB,以便只有您的应用程序才能访问您的数据。