【问题标题】:Invitation system using Passport JS使用 Passport JS 的邀请系统
【发布时间】:2018-04-01 00:01:00
【问题描述】:

我正在将身份验证系统重写为仅使用 Passport JS 的 OAuth。我设计了一个如下所述的用户流程,但我看不到让 Passport 与原始请求中的信息进行交互的最佳点在哪里。

流程将是:

  1. 经过身份验证的用户向新用户的电子邮件地址发送邀请
  2. 新用户点击链接并登陆邀请页面 (/invitation/SOMECODE)
  3. 邀请码已经过验证,如果仍然有效,则允许用户通过 Google/Slack 进行身份验证
  4. 在战略中创建了新的配置文件,但与现有公司相关联(而不是创建新的)

我希望访问 Google 策略中的 req.params,因为这是我通常会为初次使用的用户创建新个人资料和公司的地方。但如果有邀请码,我现在想查找该信息。

我看不到任何支持这种方法的文档,除了Node Passport invitation strategy,它在初始注册后使用密码。

您能否访问策略中的 req 对象,或者有没有更好的方法来使用另一个中间件来解决这个问题?

【问题讨论】:

标签: node.js passport.js


【解决方案1】:

我想你要找的是passReqToCallback

来自文档的示例:

passport.use(new TwitterStrategy({
    consumerKey: TWITTER_CONSUMER_KEY,
    consumerSecret: TWITTER_CONSUMER_SECRET,
    callbackURL: "http://www.example.com/auth/twitter/callback",
    passReqToCallback: true
  },
  function(req, token, tokenSecret, profile, done) {
    if (!req.user) {
      // Not logged-in. Authenticate based on Twitter account.
    } else {
      // Logged in. Associate Twitter account with user.  Preserve the login
      // state by supplying the existing user after association.
      // return done(null, req.user);
    }
  }
));

请参阅文档中的passReqToCallbackhttp://passportjs.org/docs/authorize

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 2011-07-15
    相关资源
    最近更新 更多