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 自定义身份验证回调未调用 的相关文章

  • 非 DOM 对象上的 jQuery 自定义事件

    我最近阅读了一些代码 其功能如下 bob name Bob Smith rank 7 bob bind nameChanged function bob trigger nameChanged 这似乎有效 但我在 jQuery 文档或源代码
  • 在Javascript中按降序对字符串进行排序(最有效)?

    W3Schools 有这个例子 var fruits Banana Orange Apple Mango fruits sort fruits reverse 这是在 Javascript 中按降序对字符串进行排序的最有效方法吗 Updat
  • Jquery从下拉列表中获取所选值的id

    我有一个下拉列表 可以从数据库获取值 如下所示 get getJobs function jobs seljobs jobs var i 0 jobs forEach function n alert job id n id 32 67 4
  • jQuery 选择 # id 以单词为前缀,计数器为后缀

    有没有办法用 jQuery 选择所有带有前缀 my 和后缀 0 9 的 id 像这样的 my 1 4 还是可以用循环来实现 div div div div div div div div div div 第一个想法 似乎效果很好 div i
  • 如何按照编写的顺序迭代 javascript 对象属性

    我发现了代码中的一个错误 我希望通过最少的重构工作来解决该错误 此错误发生在 Chrome 和 Opera 浏览器中 问题 var obj 23 AA 12 BB iterating through obj s properties for
  • Ember.js 处理 View 事件后转换到路由

    Setup 我有一个 Ember 应用程序 支持使用 Imgur API 上传图像 我已经有一个工作路线和模板来处理任何 Imgur ID 但我想在上传新图像后转换到此路线 使用返回的 Imgur ID 这是该应用程序的相关部分 http
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 如何流式传输 OpenAI 的完成 API?

    我想流式传输结果通过 OpenAI 的 API 完成 https beta openai com docs api reference completions 该文档提到使用服务器发送的事件 https developer mozilla
  • Mongoose 和 Promise:如何获取查询结果数组?

    使用猫鼬从数据库和 Q 中查询结果以获取承诺 但发现很难只获取可用用户列表 目前我有一些这样的东西 var checkForPerson function person people mongoose model Person Person
  • Typeahead.js substringMatcher 函数说明

    我只是在做一些研究Typeahead js这是一个非常酷的图书馆 感谢文档 我已经成功地获得了一个基本的示例 该文档也非常好 但是我试图弄清楚以下代码块实际上在做什么 var substringMatcher function strs r
  • 当用户单击链接时,如何记录 MixPanel 事件?

    当用户单击某种类型的链接时 我试图在 MixPanel 中记录一个事件 我正在使用 JQuery 不引人注意地完成此操作 据我所知 我需要添加一个回调函数 以便在记录事件后将用户带到 URL 这是我正在使用的代码 不幸的是
  • Select2 下拉列表动态添加、删除和刷新项目

    这让我发疯 为什么 Select2 不能在其页面上实现清晰的方法或示例如何在 Select2 上进行简单的 CRUD 操作 我有一个 select2 从 ajax 调用获取数据
  • Nodejs mysql 获取正确的时间戳格式

    我在用着mysqljs https github com mysqljs mysql得到结果后sql我变得不同TimeStamp格式如下 created at Sat Jul 16 2016 23 52 54 GMT 0430 IRDT 但
  • 如何在 Google 地图 V3 中创建编号地图标记?

    我正在制作一张上面有多个标记的地图 这些标记使用自定义图标 但我还想在顶部添加数字 我已经了解了如何使用旧版本的 API 来实现这一点 我怎样才能在V3中做到这一点 注意 当您将鼠标悬停在标记上时 标题 属性会创建一个工具提示 但我希望即使
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react
  • 使用异步调用时如何从 javascript 更新元刷新?

    我有一个系统 它使用元刷新来注销页面 该系统会在空闲用户后进行清理 不用担心 服务器也会导致会话超时 我开始通过 ajax 进行一些操作 不是真正的 xml 但这不是重点 我可以运行从异步请求返回的javascript 所以我想知道是否可以
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012
  • 如何使用 Passport 验证 Supertest 请求?

    我使用 Passport js 进行身份验证 本地策略 并使用 Mocha 和 Supertest 进行测试 如何使用 Supertest 创建会话并发出经过身份验证的请求 正如 zeMirco 指出的那样 底层superagent模块支持
  • 单击列表时使用 bootstrap Dropdown 防止下拉菜单消失

    我正在使用使用引导下拉菜单 http twitter github com bootstrap javascript html dropdowns生成下拉菜单 我想防止点击菜单时菜单消失 我已经实现了以下代码 但它不起作用 知道如何修复它吗
  • 在 GWT 中,在任何主机页标记上添加事件处理程序

    我想为任何标签添加 MouseOver 事件处理程序 举个例子 我想为旧版 HTML 页面中的每个锚点页面添加事件处理程序 继GWT指南 http code google com webtoolkit doc 1 6 DevGuideUse

随机推荐

  • 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