我正在使用基于passport.js的身份验证编写nodejs应用程序。它允许用户向其他用户发送消息,其中只允许经过身份验证的用户检索由他们发送或作为接收者发送的消息。我计划实现多个身份提供商,例如facebook,google以及本地身份验证。
我使用mongoose设置的用户架构看起来像这样:
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)
这样的东西,那么我该如何处理呢?
答案 0 :(得分:2)
一种选择是将您想要的策略作为数组传递到passport.authenticate([Strategies])
。下面的链接很好地显示了。
passport.js with multiple authentication providers?
护照作者的另一个例子:
https://github.com/jaredhanson/passport-http/blob/master/examples/multi/app.js