Passport JS successRedirect 在 Node.js 中挂起

2023-12-22

我正在使用护照local-signup并可以通过表单创建用户并使页面成功重定向到我指定的页面。

我目前的问题是,重定向后页面就会挂起。我看到其他人也有类似的经历,但看看我所拥有的,我无法弄清楚为什么我的例子挂了。

我首先对表单进行一些简单的验证,如果可以,我将继续进行护照配置:

app.post('/signup', function(req, res, next) {
  // Capture form details for when validation fails so can repopulate
  var form = {
    first_name: req.body.first_name,
    last_name: req.body.last_name,
    email:  req.body.email
  }

  var first_name = req.body.first_name;
  var last_name = req.body.last_name;
  var email = req.body.email;
  var password = req.body.password;
  var password_confirmation = req.body.password_confirmation;

  // Validation
  req.checkBody('first_name', 'First Name is required').notEmpty();
  req.checkBody('last_name', 'Last Name is required').notEmpty();
  req.checkBody('email', 'Email is required').notEmpty();
  req.checkBody('email', 'Email is not valid').isEmail();
  req.checkBody('password', 'Password is required').notEmpty();
  req.checkBody('password_confirmation', 'Passwords do not match').equals(req.body.password);

  var errors = req.validationErrors();

  if (errors) {
    res.render('home', {
      errors: errors,
      form: form
    });
  }
  else {
    passport.authenticate('local-signup', {
      successRedirect : '/members', // redirect to the secure profile section
      failureRedirect : '/', // redirect back to the signup page if there is an error
      failureFlash : true // allow flash messages
    })(req, res, next);

  }
});

local-signup

passport.use('local-signup', new LocalStrategy({
        // by default, local strategy uses username and password, we will override with email
        usernameField : 'email',
        passwordField : 'password',
        passReqToCallback : true // allows us to pass back the entire request to the callback
    },
    function(req, email, password, done) {
      // asynchronous
      // User.findOne won't fire unless data is sent back
      process.nextTick(function(callback) {
        // we are checking to see if the user trying to sign up already exists
        // User.findOne declared in User Model
        User.findOne(email, function(err, isNotAvailable, user) {
          if (err) return done(err);

          // check to see if theres already a user with that email
          if (isNotAvailable == true) {
            return done(null, false, { message: 'That email is already taken.' });
          } else {

            newUser = new Object();
            newUser.email = email;
            newUser.password = bcrypt.hashSync(password, 10);

            pool.query('INSERT INTO users(email, password) VALUES($1, $2) RETURNING *', [newUser.email, newUser.password], function (err, result) {
            if(err){
              console.log(err);
              return console.error('error running query', err);
            }
              newUser.id = result.rows[0].id;
              return done(null, newUser);
            });
          } // isNotAvailable
        }); //User.findOne
      });
    }));

试试这个方法:

passport.authenticate('local', { 
      successRedirect : '/members', 
      failureRedirect : '/', 
      failureFlash : true 
})(req, res, next);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Passport JS successRedirect 在 Node.js 中挂起 的相关文章

随机推荐

  • NightwatchJS 和 WebdriverIO 有什么区别?

    正如标题所述 Nightwatch js 和 Webdriver io 有什么区别 看起来它们具有相同的语法并且做几乎相同的事情 它们有何不同 我需要在他们之间做出选择 我已经多次使用这些工具编写了测试套件 Webdriver io 允许您
  • 出现错误 - 运行本机反应时无法识别的命令“run-android”,

    当尝试在我的模拟器上运行本机反应时 我收到此错误 react native run android 错误无法识别的命令 run android 我的模拟器已连接并且正在运行 有什么想法吗 包 json name iaapp version
  • 全屏意图不启动 Activity,但在 Android 10 上显示通知

    我尝试使用下一个代码启动广播接收器的活动 Intent i new Intent context AlarmNotification class i setFlags Intent FLAG ACTIVITY NEW TASK Intent
  • 如何调整轴以从 r 图中的零原点开始

    为了绘制三个变量 x1 x2 和 x3 的经验累积密度 我在 r 中使用了以下内容 plot ecdf x1 col blue main Distribution XYZ xlab x i ylab Prob x i lt y lines
  • 匹配点的正则表达式

    想知道最好的匹配方式是什么 test this from blah blah blah email protected cdn cgi l email protection blah blah 是 使用Python 我试过了re split
  • 如何获取Android系统颜色?

    我正在寻找获取 Android 系统颜色 设备中使用的颜色主题的方法 Using android color 我没有得到正确的颜色 例如 我的设备中的背景颜色是BLACK 菜单背景颜色为DARKGREY 值来自android color 在
  • 如何在代码中处理游标上的 IllegalStateException?

    当我调试我的应用程序时突然弹出此错误 我该如何处理这种错误 我不知道是在哪里以及如何引起的 Daemon System Thread lt 5 gt HeapWorker Suspended exception IllegalStateEx
  • Pytorch 中缺乏 L1 正则化的稀疏解决方案

    我正在尝试在简单神经网络的第一层 1 个隐藏层 上实现 L1 正则化 我查看了 StackOverflow 上的其他一些帖子 这些帖子使用 Pytorch 应用 l1 正则化来弄清楚应该如何完成 参考文献 在 PyTorch 中添加 L1
  • 使用 RSpec 进行改进的测试类

    假设我已经精炼了 module RefinedString refine String do def remove latin letters code code code code end end end 我在课堂演讲中使用它 class
  • 将所有“工作表对象”转换为 powerpoint 中的图像

    真的不知道把它放在哪个堆栈站点上 请随意将其移至正确的位置 我的问题与编程并不真正相关 但我有大量的幻灯片中嵌入了这些 工作表对象 的要点 有些似乎是来自 Excel 的图表以及来自 Visio 的其他图表类型项目 我需要将所有这些 工作表
  • Kivy 规则继承与 add_widget()

    跟进问题 Kivy 外部规则固有 https stackoverflow com questions 31618565 kivy outside rule inherence main py from kivy app import App
  • 为什么 Azure 不在我的两个实例之一上调度 HTTP 请求?

    我有一个带有两个实例的 Azure Web 角色 两个实例都 准备就绪 运行正常 在我的桌面上 同一程序的四个实例同时运行 并通过 HTTP 请求访问 Web 角色 URL 但根据日志 所有请求仅分派到实例 0 我需要将请求分派到两个实例以
  • C# 通用列表联合问题

    我正在尝试使用 Union 合并两个列表 以便消除重复项 以下是示例代码 public class SomeDetail public string SomeValue1 get set public string SomeValue2 g
  • ipython 笔记本中的居中对齐输出

    我想将我的输出 包括文本和绘图 居中对齐ipython notebook 有没有一种方法可以在同一个笔记本中添加样式 代码或屏幕截图示例会有很大帮助 尝试在代码单元中运行此命令以覆盖输出单元的默认 CSS from IPython disp
  • SharePoint 2010:RemoveFieldRef 和 Inherits="TRUE"

    我创建了一个继承自 OOTB SharePoint 的自定义内容类型Picture内容类型 我所做的唯一自定义是添加一个简单的 URL 字段 并删除基本类型上的两个字段 见下文
  • 如何根据编译器类型在 C 编译器的 SConstruct 中设置选项?

    我需要为 C 编译器设置附加选项 例如添加标志以打开所有警告 具体取决于编译器的类型 例如 对于 MSVC 我应该使用 env Append CPPFLAGS Wall 但对于 mingw gcc 我需要使用 env Append CCFL
  • Symfony2 异常响应。将 404 状态代码替换为 200

    我在 symfony2 中有一个 404 处理程序 它是一个 EventListener 对于某些 404 我会进行重定向 效果很好 对于浏览器来说 不会抛出 404 错误 new RedirectResponse newURL 该行基本上
  • 向下滚动到部分时突出显示菜单项

    我知道这个问题在这个论坛上已经被问了一百万次 但没有一篇文章帮助我找到解决方案 我编写了一小段 jquery 代码 当您向下滚动到与哈希链接中 具有相同 id 的部分时 它会突出显示哈希链接 window scroll function v
  • 通过重复数字打印所有排列的算法

    我已经成功设计了打印所有重复数字的排列的算法 但我设计的算法有一个缺陷 仅当字符串的字符唯一时它才有效 有人可以帮我扩展算法 以应对字符串的字符可能不唯一的情况 到目前为止我的代码 include
  • Passport JS successRedirect 在 Node.js 中挂起

    我正在使用护照local signup并可以通过表单创建用户并使页面成功重定向到我指定的页面 我目前的问题是 重定向后页面就会挂起 我看到其他人也有类似的经历 但看看我所拥有的 我无法弄清楚为什么我的例子挂了 我首先对表单进行一些简单的验证