护照验证 - 任何?

时间:2015-07-06 12:34:58

标签: node.js authentication express oauth passport.js

我正在使用基于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)

现在我想到的方法就是:

  • 向用户显示登录页面
  • 在此页面上,他们可以选择身份提供者
  • 他们被重定向到授权页面,授予对请求范围的访问权限,重定向到指定的回调URL
  • 已经有一个具有相应ID的用户或者创建了一个新用户。

现在,当他们尝试接收邮件时,我想再次对其进行身份验证,以便授予获取邮件的权限。他们如何进行身份验证确实无关紧要,只要它是我配置的任何策略;但是没有app.get('/messages', passport.authenticate('any'), done)这样的东西,那么我该如何处理呢?

1 个答案:

答案 0 :(得分:2)

一种选择是将您想要的策略作为数组传递到passport.authenticate([Strategies])。下面的链接很好地显示了。

passport.js with multiple authentication providers?

护照作者的另一个例子:

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