PassportJS 自定义身份验证回调未调用

2024-02-24

更新:以下错误已修复a commit https://github.com/jaredhanson/passport/issues/186。我已将第一个答案标记为“正确”,尽管该提交在其中一条评论中引起了我的注意

我希望利用自定义回调来处理 Passport 中登录的成功和失败验证本地策略 http://passportjs.org/guide/authenticate/,但看起来它只是调用成功。

这是我正在谈论的内容的一个片段:

passport.use(new LocalStrategy(
    {usernameField: 'email', passwordField: 'password'},
    function(email, password, done) {
        if(canLogin) done(null, user);
        else done({message: "This is an error message" }, false, { message: "Some Info" });
    }
));


app.post('/login', function(req, res, next) {
      passport.authenticate('local', function(err, user, info) {
         // Only called if err is not set
    });

知道为什么会出现这种情况吗?我的印象是回调会被调用,这样我就可以自己处理错误。


如果您想传播身份验证失败(用户名/密码不匹配),则不应生成错误,而应设置user to false并传递一个理由:

passport.use(new LocalStrategy(
  {usernameField: 'email', passwordField: 'password'},
  function(email, password, done) {
    if (canLogin)
      done(null, user);
    else 
      done(null, false, { message: 'Invalid login credentials' });
  }
));
...
app.post('/login', function(req, res, next) {
  passport.authenticate('local', function(err, user, info) {
    if (user === false) {
      // handle login error ...
    } else {
      // handle successful login ...
    }
  })(req, res, next);
});

The err为身份验证过程中发生的异常保留,例如,如果您收到数据库错误等。但是,尽管 Passport 文档表明这些错误将传递给passport.authenticate回调,他们似乎没有(这就是它不适合你的原因)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PassportJS 自定义身份验证回调未调用 的相关文章

随机推荐

  • Sphinx 类属性文档

    我一直在尝试记录我的蒙戈引擎 http mongoengine odm readthedocs org 基于应用程序 但我在文档类上记录属性时遇到问题 我采取的正确语法如下 class Asset Document This is the
  • 从 Asp.net MVC2 迁移到 MVC4

    我想将 MVC2 网站转换为 MVC4 我知道有一些工具可以帮助从 MV2 转换为 MVC3 但我找不到从 MVC2 转换为 MVC4 所需的任何工具或步骤 请向我指出一些文章 博客 它们可以为我提供更多信息来帮助完成此过程 看起来现在有一
  • “错误:以错误的顺序接收到数据包。”当连接到无服务器 aurora 时

    我正在实现一个 Web 应用程序 它调用 lambda 函数从数据库获取数据 我选择了 Serverless Aurora 并编写了代码 但出现了异常 Error Received packet in the wrong sequence
  • 如何创建自定义水平进度条

    Please help to create horizontal progress bar like this 设置水平进度条的样式 style android attr progressBarStyleHorizontal 创建自定义进度
  • 在 Chart.js 中设置条形图 Y 轴标签的格式

    我在这里查看了文档和类似的问题 但似乎没有找到解决我的问题的可行方法 我正在使用 Chart js v 2 1 6 并且我有一个条形图 其中百分比值存储为数字 已乘以 100 我需要 y 轴标签和工具提示来显示 在值后面签名 有人可以解释一
  • 如何对 gtsummary 包中特征表列中的行顺序进行排序或更改?

    我正在尝试使用 tbl summary 中的函数 sort list stage alphanumeric 更改特征表列中的行顺序trial c trt age stage grade gt tbl summary by trt sort
  • 使用 Button 的 NodeJS Post 请求

    我不知道这是否可能 我所做的所有研究都表明 通过表单和文本输入是可能的 但无论如何 使用 NodeJs 和 Express 我希望能够单击网页上的按钮 单击后 它会向我的 Node JS 服务器发送一个 post 请求 更简单的说法 单击按
  • Direct2D 和 DXGI(D3D 互操作)多线程的最佳实践是什么?

    理想情况下 我希望有多个工作线程能够渲染到屏幕外渲染目标 然后将渲染的内容 传输 到屏幕上目标 对于 hwnd 渲染目标 这似乎不是问题 msdn 有一个例子 当屏幕渲染目标基于 DXGI 交换链时 我不太确定该怎么做 据我所知 每个窗口只
  • 为什么在基于范围的初始化程序中使用临时对象会导致崩溃?

    为什么以下代码在 Visual Studio 和 GCC 上都会崩溃 为了使其崩溃 需要基于范围的 for 循环 std map std string 并引用字符串 如果我删除其中任何一个 它就会起作用 include
  • 如何获取Angular2中ag网格中选定行的数据?

    我在 angular2 中设置了 ag grid 它工作正常 但我无法获取所选行的值 我的控制台窗口中没有错误 这就是我初始化网格的方式 import Component from angular2 core Component selec
  • 如何在 MVC-gui 中使用 JUNG2?

    我正在玩 JUNG2 想要实现一个小型 GUI 允许我显示和更改图表 遵循 JUNG 库中的示例效果很好 但它们没有分离模型 视图和控制器 所以我开始以干净的分离方式构建 GUI 我的第一个 GUI 版本应该是简单地显示初始图形 视图是模型
  • 是否可以在 sass 中重载 mixins ?

    假设你有一个像这样的阴影混合 mixin box shadow offset blur color moz box shadow offset offset blur color webkit box shadow offset offse
  • MySql 中的 DELIMITER 错误

    我正在使用以下sql DELIMITER DROP PROCEDURE IF EXISTS get auto increment settings CREATE PROCEDURE get auto increment settings B
  • Rails 不转换时区 (PostgreSQL)

    我对时区和 postgresql 数据库 Rails 3 0 4 PostgreSQL 9 0 有问题 我正在使用自定义范围 在其中附加一些条件 执行连接等 问题是 Rails 不会将时间转换为我的本地时区 这是范围的代码 scope wi
  • VBscript删除子文件夹

    我对 vb 脚本非常陌生 我需要一个脚本来根据起始名称 SA 和 2 天前删除几个三级子文件夹 example C abc user1 temp SA123 c abc user2 temp SA2345 c abc user3 temp
  • 如何在 VS Code 编辑器中按标题级别更改 Markdown 标题颜色?

    我的问题类似于但那里给出的答案是针对 Vim 的 我需要一个针对 VS Code 的答案 我是一个真正的新手 我尝试自己解决这个问题 但这些尝试失败了 Markdown 预览 GitHub 样式 https github com mjbvz
  • 如何复制克隆 UIElement 并保留布局/渲染信息?

    我想复制一个复杂的数据绑定UIElement但保留原始 UIElement 中的绑定 布局和渲染信息 创建一个新的UIElement似乎效率低下 因为我必须执行另一个完整的绑定 测量 排列 渲染过程 到目前为止我最接近的是创建一个新的Dra
  • 对于上下文无关语法,如何将其转换为等效的下推自动机?

    对于 0 1 2 上的上下文无关文法 G 起始变量为 S S 0S0 1S1 2S2 是是 22 我如何将其变成等效的下推自动机 下推自动机可以将符号推入堆栈顶部并将其弹出 它还可以将其转换基于最顶层的堆栈符号 我们需要考虑一种机制 允许我
  • 通过 USB 模拟 UART

    有谁知道是否可以通过 USB 模拟 UART 简单串行发送和接收 这将如何实现 我在 Microchip 网站上找到了这个链接 但不是很容易找到 http www microchip com forums m522571 print asp
  • PassportJS 自定义身份验证回调未调用

    更新 以下错误已修复a commit https github com jaredhanson passport issues 186 我已将第一个答案标记为 正确 尽管该提交在其中一条评论中引起了我的注意 我希望利用自定义回调来处理 Pa