当前位置: 首页 > 面试题库 >

什么是Passport Strategy中的“完成”回调功能配置“使用”功能

闻法
2023-03-14
问题内容

我是一个node.js和express.js新手。这个问题看似愚蠢,但我真的很困惑。

我正在尝试使用通行证配置本地策略身份验证。如官方文档所示,我们可以通过以下代码来计算此本地策略,

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); }
      if (!user.verifyPassword(password)) { return done(null, false); }
      return done(null, user);
    });
  }
));

我的困惑是关于done回调函数。当官方文档在路由处理程序中将此中间策略用作中间件时,无需为此done回调传递function参数。

app.post('/login', 
  passport.authenticate('local'),
  function(req, res) {
    res.redirect('/');
  });

因此,done如果不提供function参数,此回调函数是否不为null?如果不是,那么该done回调函数是什么以及该done回调函数将发生什么过程?


问题答案:

done是策略实施内部调用的一种方法。

然后您导航,你可以看到,到的一个success/ error/
fail方法(同样,通过实施。有更多的选择)。每个选项可以调用的next,在你的代码片段,其中如下:

function(req, res) {
  res.redirect('/');
});

success被调用时,它可以将用户连接请求或做其他事情,这取决于你的需求(它看起来为options您传递给passport.authenticate)。如果您想确定何时next调用,则应使用custom callback,它会给您带来更大的灵活性。

我强烈建议您阅读源代码。



 类似资料:
  • 问题内容: 我有以下JavaScript代码: 我如何确保仅在完成后调用? 问题答案: 指定一个匿名回调,并使function1接受它:

  • 问题内容: 我正在一个网站上,我们从XML文件中获取信息。效果很好,但是现在我需要对内容进行滑动。为此,我将使用jCarousel声明它们可以通过调用回调函数来处理动态加载的内容。 但是,当我成功调用函数时,无法进行初始的ajax加载。我究竟做错了什么? 我做错什么了吗?还是我必须去一个完全不同的地方?:-) 问题答案: 使用hulabula代替hulabula()或将函数直接传递给ajax选项:

  • 问题内容: 在此页面中,我找到了新的JavaScript函数类型: 我已经知道了什么,以及做的,但不知道什么是注定的。它是什么? 问题答案: 这是一个生成器功能。 生成器是可以退出并稍后重新输入的函数。它们的上下文(变量绑定)将在重新进入时保存。 调用生成器函数不会立即执行其主体。而是返回该函数的迭代器对象。调用迭代器的方法时,将执行生成器函数的主体,直到第一个表达式指定要从迭代器返回的值,或者使

  • 问题内容: 我们经常看到如下: 有什么功能? 问题答案: DOCTYPE的最主要用途是在Quirks模式和Standards模式渲染之间切换浏览器。 出现此功能的原因是IE的旧版本中的“残破”渲染。人们认识到,如果Microsoft仅“修复”了IE呈现引擎,则许多现有站点将无法正确呈现。因此,它的工作方式是,如果您在页面中完全放置了_任何_有效的DOCTYPE声明,则假定您知道自己在做什么,并且浏

  • 问题内容: 我发现某些jQuery插件在其css规则中使用“ zoom”描述符,我什至查看w3c网站,也发现它用于放大,但是我实际上如何实现呢?还是我必须定义一些视口?以及如何定义这样的视口?还是我对整个事情都错了? 有可能像这样使用它吗 问题答案: CSS规范中未包含缩放功能,但IE,Safari4,Chrome支持缩放功能(从3.5开始,您可以在Firefox中获得类似的效果)。 因此,所有浏

  • 本文向大家介绍JSP中 操作的功能是什么?,包括了JSP中 操作的功能是什么?的使用技巧和注意事项,需要的朋友参考一下 通过此操作,您可以将文件插入到正在生成的页面中。语法看起来像这样- 与include指令不同,include指令在将JSP页面转换为servlet时插入文件,而该动作则在请求页面时插入文件。 下表列出了与include操作相关联的属性- 序号 属性和说明 1 page 要包含的页