使用护照进行 Node.js 用户身份验证

2024-03-25

(使用序列化函数更新了代码 - 仍然重定向到 /failedRedirect)

我试图使用护照包进行简单的用户名/密码身份验证,但失败了。在下面的示例中,我尝试通过基本上始终返回有效的身份验证(无论通过什么)来验证身份验证是否有效,但由于某种原因它失败并且护照重定向到失败的登录链接。

如果有人可以帮助我弄清楚如何让这个示例简单地验证任何内容,我应该能够从那里进行管理。

CoffeeScript中的代码是:

express = require "express"
passport = require "passport"
LocalStrategy = require("passport-local").Strategy

passport.use(new LocalStrategy( (username, password, done) ->
  console.log "LocalStrategy invoked"
  done(null, {id: 1, name: "Marius"})
))

passport.serializeUser (user, done) ->
  done null, user

passport.deserializeUser (obj, done) ->
  done null, obj

app = express.createServer()

app.configure ->
  app.use express.bodyParser()
  app.use express.static("./public")
  app.use express.cookieParser("SOMESECRET")
  app.use express.session
    secret: "SOMESECRET"
    cookie:
      maxAge: 60000
  app.use passport.initialize()
  app.use passport.session()
  app.set "view", "./srv/views"
  app.set "view engine", "jade"

app.get "/login", (req, res) ->
  res.send "login page"

app.post "/login", passport.authenticate("local",
  failureRedirect: "/failedRedirect"
  successRedirect: "/successRedirect"
  failureFlash: true)

app.listen 8082

Solved:好吧,我相信有几个原因导致我无法让它工作。序列化的东西可能是其中之一(我还没有测试过),但既然 Jared 说需要它们,我就把它们留在里面(他是 Passport 的作者)。另一个困惑可能与 Express 版本和我对 npm 的困惑有关。我相信我测试了最新的 Express v2,但我也测试了我现在正在运行的 v3。对于第三版,您可能应该查看connect-flashGithub 上的模块也是如此,因为 Jared 示例中使用的一些“flash”内容已从express v3 中移出(因此该模块将其放回...)。最后,确保您使用正确命名的输入名称进行发布(username and password默认情况下)。


在我看来,您缺少建立登录会话所需的用户序列化逻辑。如果我将这两个函数添加到 JavaScript 代码中,它就会起作用:

passport.serializeUser(function(user, done) {
  done(null, user);
});

passport.deserializeUser(function(obj, done) {
  done(null, obj);
});

您需要根据您的需要对用户进行序列化。详细信息位于本页底部:http://passportjs.org/guide/configuration.html http://passportjs.org/guide/configuration.html

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

使用护照进行 Node.js 用户身份验证 的相关文章

  • AWS Lambda 提前结束(没有任何显式返回或回调)

    我在放入 AWS Lambda 中的一些 Node js 代码时遇到了一些问题 我需要进行几个异步调用 虽然第一个调用的行为符合我的预期 但 lambda 函数在第二个调用完成之前终止 返回值为 null 这让我认为 lambda 正在执行
  • NodeJs读取JSON文件

    我正在使用 NodeJs 读取 json 文件 我的代码非常基本 var obj require sample json console log obj 0 Sample json 文件包含这样的字符串化 JSON sample good
  • 在 angularjs 模块初始化期间有条件地注入依赖项

    我有一个角度模块 我想有条件地将依赖项注入其中 IE var myapp angular module myapp ngRoute myappcontroller ngGrid I want to include ngGrid only i
  • 如何在下拉列表中选择一个选项

    我正在使用 AngularJS 指令 我需要在模板中设置下拉列表的选定选项
  • RequireJS 文本插件和变量连接字符串

    我正在使用 RequireJS 文本插件来加载一些 html 模板 当我将字符串文字传递给 require 函数时 它工作正常 var templateHTML require text templates template name ht
  • 变量前面加双下划线

    我的节点代码中有以下代码片段 var fs require fs fs readdir dirname function err files console log files 为什么变量 dirname 有双下划线 我知道一个下划线是私有
  • IE8 和 9 上的 socket.io 问题

    Socket io 在除 IE8 和 9 之外的所有平台上都能完美运行 这是客户端要求 你们能帮忙解决这个问题吗 我一直在阅读所有类似的问题 但到目前为止我发现的大多数解决方案都无法解决 IE8 上的这个问题 这是结构 服务器端 var i
  • SVG 中三角形的圆角

    我正在尝试制作一个具有圆角的三角形 三角形将如下所示 左下角是唯一看起来相当容易制作的角 主要是因为这是一个 90 度的 转弯 该转弯是使用QSVG 中的命令具有以下参数 Q x y height x y height RADIUS从我正在
  • Famo.us 滚动视图高度

    我正在尝试使用著名的顺序布局在滚动视图下方添加图像 但滚动视图的高度有问题 这就是我创建滚动视图的方式 var scrollview new Scrollview direction Utility Direction X options
  • AngularJS - 服务、工厂、过滤器等中的依赖注入

    因此 我想在我的 Angular 应用程序中使用一些插件和库 目前 我只是引用这些函数 方法 因为它们是在 99 的应用程序中以完全忽略依赖注入的方式使用的 我有 例如 javascript 库 MomentJS 它处理格式化和验证日期 并
  • jspm / jQuery / TypeScript - 模块“jquery”没有默认导出

    我正在尝试使用 TypeScript 和 jspm system js 来引导 Web 应用程序进行模块加载 我还没有走多远 安装 jspm 后 并使用它来安装 jQuery jspm install jquery 以及基础知识 main
  • 无法使用 webpack 加载 Node 原生插件

    虽然我正在使用vue cli在生成 webpack 配置的示例代码中 没有任何特定于 vue 的内容 我像这样创建示例应用程序 vue init webpack webpack modules example 生成webpack base
  • 表单序列化javascript(无框架)

    想知道 javascript 中是否有一个没有 jquery 或任何框架的函数可以让我序列化表单并访问序列化版本 2023 年更新 Use FormData https developer mozilla org en US docs We
  • 如何上传文件 - sails.js

    我可以下载图像和 pdf 但无法下载文档文件 doc pptx odt 下载文档 doc pptx odt 时 仅将其下载为 ZIP XML 文件 我可以做什么 我在用着 填写上传文件文档 https github com balderda
  • Promise 构造函数回调的主体何时执行?

    假设我有以下代码构造一个Promise function doSomethingAsynchronous return new Promise resolve gt const result doSomeWork setTimeout gt
  • 了解使用 Windows 本机 WPF 客户端进行 ADFS 登录

    我已经阅读了大量有关 ADFS 与 NodeJS Angular 或其他前端 Web 框架集成以及一般流程如何工作的文献 并通过 Auth0 Angular 起始代码构建了概念证明 但我不明白如何这可以与本机 WPF Windows 应用程
  • 不可见的 reCAPTCHA - 缺少必需的参数:sitekey

    我正在为每个带有具有类的按钮的表单动态加载不可见的 reCAPTCHAg recaptcha 我遇到的问题是验证码未正确加载 我不知道为什么 我按照验证码网站上的文档进行操作 但我不确定如何以及为什么会出现此错误 Uncaught Erro
  • 当选项卡重新加载(chrome 扩展)时,如何运行此脚本?

    所以我想在指定 URL 中重新加载选项卡时运行脚本 它几乎可以工作 但实际上 id 不能 这是我的清单文件 manifest version 2 name Sample Extension description Sample Chrome
  • 无法从 JSON 请求获取数据,尽管我知道它已返回

    我试图获取从 getJSON 返回的数据 但我无法让它工作 我已经在 search twitter API 上尝试了相同的代码 效果很好 但它不适用于其他网站 我知道数据已返回 因为我在使用检查器时可以找到它 我通过检查器找到的值是 id
  • 将 Angular Web 组件 EventEmitter 监听到 javascript

    我在以下工具的帮助下创建了一个小型网络组件本文 https medium com IMM9O web components with angular d0205c9db08f使用角度元素 其中包括 Input and Output 我能够将

随机推荐

  • 更改最后一个
  • 的 CSS
  • 我想知道是否有某种方法可以更改最后一个 CSS 属性li在使用 CSS 的列表中 我已经研究过使用 last child 但这看起来确实有问题 我无法让它为我工作 如有必要 我将使用 JavaScript 来完成此操作 但我想知道是否有人可
  • 如何解释 Seaborn distplot 的轴

    Snippet plt figure figsize 10 5 plt xticks np arange 0 11 1 sns distplot 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 kde F
  • 如何增加LVL缓存有效时间?

    我已经在我的应用程序中实施了 LVL 服务器托管策略 我知道lvl服务器响应会在设备中缓存一段时间 因此用户可以在没有互联网连接的情况下使用应用程序 然后lvl使用缓存的许可证 我想知道这个期限到底有多长以及如何延长它 基本上 lvl 我已
  • 用于在不同工作簿中选择范围的 VBA 对话框

    我想允许用户选择可能位于不同工作簿中的范围 我尝试使用 inputbox type 8 来执行此操作 它可以选择工作簿中的数据 但不允许我在不同的工作簿中选择范围 因此我想要一个允许我执行此任务的对话框 由于我有空 我为您创建了一个示例 创
  • .JSchException:数据包损坏

    我在 RHEl 6 上使用 Jsch 0 1 51 和 Jdk 1 7 51 在与远程计算机进行会话时 我收到以下异常 com jcraft jsch JSchException Packet corrupt at com jcraft j
  • Python venv env 失败 - [WinError 2] 系统找不到指定的文件

    我在 Windows 10 计算机上安装了最新版本的 Python 3 8 2 我以前有Python 3 7 我将其卸载并确认在系统路径中不再引用它 安装最新版本后 我以管理员身份运行CMD py m venv env 我收到此错误 错误
  • 添加到Python中正在迭代的双端队列?

    我在 Python 中有一个双端队列 正在对其进行迭代 有时 当我进行交互时 双端队列会发生变化 从而产生RuntimeError deque mutated during iteration 如果这是一个 Python 列表而不是双端队列
  • 如何部署Tomcat的示例websocket应用程序?

    我正在尝试了解如何部署 Apache Tomcat 7 中引用的示例WebSocket 操作方法 http tomcat apache org tomcat 7 0 doc web socket howto html page 应用程序开发
  • 根据室外温度设置背景颜色

    嘿哦 所以 我有一个温度小部件要在我正在进行的项目上实现 没有什么特别困难的 我有一个免费的 API 来检索我需要的数据等 但是 和我一起工作的可爱设计师有一个颜色特征 我对此一无所知 他会根据当前的天气温度来定义背景颜色 我的意思是如果温
  • 在 ReactJS 中禁用 ContextMenu

    第一篇文章在这里 所以希望我能以最有帮助的方式提出这个问题 我对编码还很陌生 在努力推动自己的过程中 我决定尝试使用 React 来重新创建扫雷 而不是使用任何教程 我已经获得了很多功能 但我真的停留在这部分上 我正在使用事件侦听器 onC
  • 如何快速本地化故事板?

    我正在尝试使用 Swift 3 和 Xcode 8 1 本地化我的应用程序 我正在尝试使用 Storyboard main strings German 并以编程方式使用来本地化应用程序 NSLocalizedString 我能够使用编程方
  • 如何从多个网站获取 RSS 源

    我正在为我的网站获取 RssFeeds 并且它正在显示 但是如何从多个站点获取 RSS Feed 并且需要从第一个站点的三个 feed 第二个站点的三个 feed 等依次显示 主要来自 CNN BBC 这是我的代码 protected vo
  • 如何使用 asp.net 和 C# 强制回发

    我与客户安排了一个演示 现在我需要一个快速而肮脏的修复 明天我会找到更合适的解决方案 但目前我需要一种方法来强制回发或刷新页面 我试过 Response Redirect 但它带我到一个页面 上面写着 对象已移至此处 这里 是一个超链接 可
  • Cabal - 在构建库时公开所有模块

    是否可以告诉Cabal在构建库时公开所有模块 现在我必须提供很长的模块列表exposed modulescabal 配置文件部分 您必须列出 cabal 配置文件中的所有模块 在你的情况下 你只需将模块列表放在后面exposed modul
  • 将列表设置为 pandas 数据帧的列中的值

    假设我有一个数据框df我想创建一个填充 0 的新列 我使用 df new col 0 到目前为止 没有问题 但如果我想使用的值是一个列表 它就不起作用 df new col my list ValueError Length of valu
  • jQuery 在选择框上设置选项

    我似乎无法让这个工作
  • 为什么 String.equals() 比它本身快?

    我试图创建一个更快的版本字符串 equals http docs oracle com javase 7 docs api java lang String html equals 28java lang Object 29方法并从简单地复
  • 如何使用plot_grid在没有任何空间的情况下放置绘图?

    我正在做 2x2 地块的排列 这些图共享相同的轴 所以我想将它们放在一起 例如 这段代码 library ggplot2 library cowplot Value lt seq 0 1000 by 1000 10 Index lt 0 1
  • 如何自托管 ASP.NET 5 MVC6 应用程序

    刚刚开始学习 ASP NET 5 MVC 6 我很好奇在 IIS 之外自托管这样一个应用程序 作为 Windows 服务 我应该使用 TopShelf 来实现这一点 就像 OWIN Katana 应用程序的情况一样 还是 ASP NET 5
  • 使用护照进行 Node.js 用户身份验证

    使用序列化函数更新了代码 仍然重定向到 failedRedirect 我试图使用护照包进行简单的用户名 密码身份验证 但失败了 在下面的示例中 我尝试通过基本上始终返回有效的身份验证 无论通过什么 来验证身份验证是否有效 但由于某种原因它失