【问题标题】:Node.js + Passport: What happens to 3rd argument 'info' in done() method?Node.js + Passport:done() 方法中的第三个参数“信息”会发生什么?
【发布时间】:2015-01-29 19:35:03
【问题描述】:

我发现done() 方法(或success(),由我的调试器告知)还有第三个参数,称为info。谁能告诉我传递给它的值会发生什么?

编辑

我所指的done() 方法是我们必须在策略回调中调用的方法。例如

var passport = require('passport')
  , LocalStrategy = require('passport-local').Strategy;

passport.use(new LocalStrategy(
  function(username, password, done) {
    User.findOne({ username: username }, function (err, user) {
      if (err) { return done(err); }
      if (!user) {
        return done(null, false, { message: 'Incorrect username.' });
      }
      if (!user.validPassword(password)) {
        return done(null, false, { message: 'Incorrect password.' });
      }
      return done(null, user);
    });
  }
));

sn-p 来自here。可以看出,在某些情况下,message 被作为第三个参数传递给对象done()。我们如何在路由方法中访问这个message

【问题讨论】:

  • 请展示一些示例代码或为我们指明正确的方向。这有点模糊。另外,我看到你标记了它,但你的问题从来没有提到护照,所以我花了一段时间才意识到你在问什么。
  • 感谢您指出@loganfsmyth!我已经更新了q,如果需要更多解释,请告诉我。
  • 你能说明你是如何调用中间件的吗?

标签: node.js passport.js


【解决方案1】:

您应该能够访问作为req.authInfo 作为第三个参数传递的信息。

你可以看到处理hereinfo,它被分配给authInfo并用于flash消息。

【讨论】:

    【解决方案2】:

    info 是一个可选参数,可以包含其他用户信息,例如角色、用户配置文件或授权,这些信息可能已在验证功能期间确定。 这有助于第三方身份验证策略,因为一旦用户成功通过身份验证,就可以传递有关经过身份验证的用户的这些详细信息。否则,您可能需要稍后再查找它们,这是低效的。

    正如loganfsmyth 指出的那样,info 设置为req.authInfo,以便中间件或路由稍后可以访问它。

    此外,您可以通过registering the transformAuthInfo 进一步转换信息对象,如下所示:

    passport.transformAuthInfo(function(info, done) {
      Client.findById(info.clientID, function (err, client) {
        info.client = client;
        done(err, info);
      });
    });
    

    对于 LocalStrategy,您可以see in the verified function 将该信息传递给失败和成功操作。

    另外,您可以指定typemessage 属性,这些属性将用于向用户显示的闪存状态信息消息。 (type 在用户通过身份验证时默认为“成功”,否则为“错误”。

    Flash 消息通过 request.flash() 函数在 Express 2.x 中工作。 这已在 Express 3.x 中删除 - 如果您需要此功能,建议使用 connect-flash 中间件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      相关资源
      最近更新 更多