护照认证 - 任何?

Passport Authentication - Any?

我正在编写一个基于 passport.js 身份验证的 nodejs 应用程序。它允许用户向其他用户发送消息,其中只有经过身份验证的用户才可以检索由他们发送或以他们作为接收者的消息。我计划实施多个身份提供者,例如 facebook,google,也许还有本地身份验证。

我使用猫鼬设置的用户模式看起来像这样:

var userSchema = new mongoose.Schema({
  googleId: String,
  facebookId: String,

  email: { type: String, required: true },
}, {
  strict: false
})

module.exports = mongoose.Model('User', userSchema)

现在我想到的方法是这样的:

现在当他们尝试接收消息时,我想再次对他们进行身份验证以授予获取消息的授权。他们如何进行身份验证并不重要,只要它是我配置的任何策略即可;然而,没有 app.get('/messages', passport.authenticate('any'), done) 这样的东西,那么我该如何处理呢?

一种选择是将您想要的策略作为数组传递给 passport.authenticate([Strategies])。下面的 link 很好地说明了这一点。

passport.js with multiple authentication providers?

护照作者的另一个例子:

https://github.com/jaredhanson/passport-http/blob/master/examples/multi/app.js