【问题标题】:Passport local strategy auth seems to only work on localhost with a shared MongoDB instancePassport 本地策略身份验证似乎仅适用于具有共享 MongoDB 实例的 localhost
【发布时间】:2016-03-08 22:08:17
【问题描述】:

这很奇怪,但我不确定还会发生什么。我已经成功地为 Node.js Express 应用程序部署了 passport-local 策略,用户帐户存储在 MongoDB 中。我通过 MongoLab 使用 Mongo 作为服务。

我的帐户和登录身份验证在本地按预期工作。但是当我将我的应用程序部署到 AWS 时(仍然使用相同的 Mongo 服务),相同的帐户凭证会失败。我想知道... Passport 是否以某种方式使用 URL、端口或其他特定于环境的信息来验证用户身份?也许在如何执行密码查找?

我已将其范围缩小到 passport.authenticate('local') 中间件,尽管如果这个库在不同环境中使用完全相同的代码以某种方式表现不同,我会感到惊讶。

我还应该提到我正在为我的用户模型使用passport-local-mongoose 插件。

【问题讨论】:

  • 我遇到了同样的问题。似乎在不同的环境中,身份验证仅适用于创建它的环境。

标签: node.js mongodb authentication passport.js passport-local


【解决方案1】:

好的 - 我想通了。

在我的本地系统上,我有一个更新版本的节点,但在我部署的版本(在 AWS ElasticBeanstalk 上)上,它使用的是 v0.10.36。

如果您查看passport-local-mongoose 的代码,您会看到:

var pbkdf2DigestSupport = semver.gte(process.version, '0.12.0');
...
var pbkdf2 = function(password, salt, callback) {
  if (pbkdf2DigestSupport) {
    crypto.pbkdf2(password, salt, options.iterations, options.keylen, options.digestAlgorithm, callback);
  } else {
    crypto.pbkdf2(password, salt, options.iterations, options.keylen, callback);
  }
};

因此,如果两个不同版本的节点有一个高于 0.12.0 和一个低于 0.12.0,您将获得不同的加密功能。

【讨论】:

    猜你喜欢
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 2018-06-08
    • 2018-01-09
    • 2022-07-19
    • 1970-01-01
    • 2014-07-04
    相关资源
    最近更新 更多