护照认证 - 任何?
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)
现在我想到的方法是这样的:
- 向用户显示登录页面
- 在此页面上,他们可以选择身份提供商
- 他们被重定向到授权页面,授予对请求范围的访问权限,被重定向到我指定的回调 URL
- 已经有一个用户具有相应的 ID,或者创建了一个新用户。
现在当他们尝试接收消息时,我想再次对他们进行身份验证以授予获取消息的授权。他们如何进行身份验证并不重要,只要它是我配置的任何策略即可;然而,没有 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
我正在编写一个基于 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)
现在我想到的方法是这样的:
- 向用户显示登录页面
- 在此页面上,他们可以选择身份提供商
- 他们被重定向到授权页面,授予对请求范围的访问权限,被重定向到我指定的回调 URL
- 已经有一个用户具有相应的 ID,或者创建了一个新用户。
现在当他们尝试接收消息时,我想再次对他们进行身份验证以授予获取消息的授权。他们如何进行身份验证并不重要,只要它是我配置的任何策略即可;然而,没有 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