护照验证不重定向

2024-04-18

我正在编写一个本地注册策略,发现它不起作用,所以我退后一步,尝试对我的空集合进行身份验证。每次我提交表单都会花费大约 30-40 秒的时间,直到导致超时。我确保调用了 Passport.authenticate() ,但似乎它没有执行任何重定向,因此它超时了,因为我也没有渲染某些内容。

问题:

  1. 我预计它会重定向到 failureUrl(即“/signup”),但什么也没发生。我在这里做错了什么?
  2. 为什么没有来自护照的单一日志消息?这让我发疯,因为我完全不知道那里出了什么问题。
  3. 我是 node.js 的新手,据我所知,我不需要将配置的护照对象传递给路由器,但我可以这样做const passport = require('passport')那是对的吗?

这是我的 /signup 路由的函数处理程序:

function processSignup (req, res) {
    logger.info("POST request received")
    logger.info(req.body)
    passport.authenticate('local', {
        successRedirect : '/profile', // redirect to the secure profile section
        failureRedirect : '/signup', // redirect back to the signup page if there is an error
        failureFlash : true // allow flash messages
    })
}

温斯顿打印:

7:32:04 PM - 信息:收到 POST 请求 7:32:04 PM - 信息:[电子邮件受保护] /cdn-cgi/l/email-protection, 密码=dasdsa, 提交=注册

我的 Passport.js 文件如下所示:

const LocalStrategy = require('passport-local').Strategy
const User = require('./user-model')
const passport = require('passport')

// expose this function to our app using module.exports
function config() {
    passport.serializeUser(function(user, done) {
        done(null, user.id)
    })

    // used to deserialize the user
    passport.deserializeUser(function(id, done) {
        User.findById(id, function(err, user) {
            done(err, user)
        })
    })

    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, { message: 'Incorrect username.' });
                }
                if (!user.validPassword(password)) {
                    return done(null, false, { message: 'Incorrect password.' });
                }
                return done(null, user);
            });
        }
    ));
}

module.exports = {
    config: config
}

我的 app.js 的相关片段:

// required for passport
require('./authentication/passport').config();
app.use(cookieParser())
app.use(bodyParser())
app.use(session({ 
    secret: 'secretToBeChanged',
    saveUninitialized: false,
    resave: false
}))
app.use(passport.initialize())
app.use(passport.session()) // persistent login sessions
app.use(flash()) // use connect-flash for flash messages stored in session

快速浏览了 Passportjs 的文档后,我认为您需要执行以下操作:

function processSignup (req, res, next) {
    logger.info("POST request received")
    logger.info(req.body)
    const handler = passport.authenticate('local', {
        successRedirect : '/profile', // redirect to the secure profile section
        failureRedirect : '/signup', // redirect back to the signup page if there is an error
        failureFlash : true // allow flash messages
    });
    handler(req, res, next);
}

passport.authenticate()返回一个用作路由处理函数的函数。
通常,您会输入类似以下内容:

app.post('/login', passport.authenticate('local', {
  successRedirect: '/',
  failureRedirect: '/login',
  failureFlash: true 
}));

但是由于您已经使用自己的路由处理函数进行了抽象,因此您需要调用从passport.authenticate().

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

护照验证不重定向 的相关文章

  • Node.js 每个用户一个会话

    如何防止我的用户同时从两个设备登录我的系统 因此 如果用户从计算机登录 当他从不同的计算机登录时 首先会自动关闭会话 不需要使其实时 我使用node js express js mongoose passport connect mongo
  • 限制文本区域中每行的字符数

    我整个周末都在寻找解决这个难题的方法 但尚未找到一个可以正常工作的解决方案 我想要实现的是限制文本区域中每行的字符数 不是相同地限制它们 而是我选择的每行不同的字符数 例如 我只想在我的文本区域中包含 4 行 第 1 2 和 3 行将限制为
  • 如何通过 HTML 按钮播放声音

    我目前通过网站播放音乐的方法是通过 HTML 音频标签 不过我希望能够通过 HTML 按钮来播放它 该按钮应该能够在播放和停止之间切换音乐 我在 JSFiddle 创建了一个示例 但不知道如何实现它 有人可以告诉我如何使用我的 JSFidd
  • 未捕获的引用错误:myFunction 未定义[重复]

    这个问题在这里已经有答案了 这到底是怎么回事 http jsfiddle net sVT54 http jsfiddle net sVT54
  • 将 Sweet Alert 弹出窗口添加到 React 组件中的按钮

    我为 Bootstrap 和 React 找到了这个完美的 Sweet Alert 模块 我在 Meteor 应用程序中使用它 http djorg83 github io react bootstrap sweetalert http d
  • 响应式网格布局框架[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Ember.JS - 如何在同一页面中使用多个模型、控制器和视图?

    我主要了解 Ember JS 的基础知识 大多数示例实际上只处理单个控制器和模型以在页面上显示某些内容 我真的很想用 Ember 构建一个完整的 Web 应用程序 所以有人能告诉我如何组织和连接多个控制器 模型和视图到一个页面中吗 例如 如
  • JavaScript 动画平滑滚动

    默认情况下 当您有这样的片段链接时 a href some url some fragment some text a 浏览器立即向下滚动到该片段 我该如何编程才能使用标准 JS 顺利地向下移动到该片段 这是一个例子 Example htt
  • HTML colorpicker 发生变化时如何获取新值?

    我正在开发一个需要更改 HTML 颜色的网络应用程序canvas基于的价值观colorpicker 我有一个colorpicker在我需要获取的 HTML 中value从每次更新开始
  • v-file-input .click() 不是函数

    我试图以编程方式触发 v file input 的 click 事件 因为它在 Vuetify 的文档中 但它显示一个错误this refs imagePicker click is not a function我在这里错过了什么吗 代码重
  • 用数组反向查找对象

    假设我有一个这样的对象 resourceMap a 0 1 2 3 4 5 6 7 8 9 10 b 11 12 c 21 23 d 54 55 56 57 510 确定是否的最佳方法是什么resourceId 21将会 c 我们不知道钥匙
  • 使水平滚动条始终可见,即使底部不在视图中

    我将用一个片段来开始这个问题 该片段几乎显示了我想要完成的任务 wrapper overflow hidden display flex sidebar min width 200px background 333 color FFF co
  • 是否可以使用打字稿映射类型来创建接口的非函数属性类型?

    所以我正在研究 Typescript 的映射类型 是否可以创建一个接口来包装另一种类型 从而从原始类型中删除函数 例如 interface Person name string age number speak void type Data
  • Keycloak javascript 适配器 `keycloak.init` 加载 404 iframe

    我正在尝试使用 javascript 适配器将 Keycloak 集成到我的客户端应用程序keycloak js 但是 我似乎无法让它发挥作用 这是我的代码 const keycloak new Keycloak realm my real
  • WebRTC:通道、轨道和流与 RTP SSRC 和 RTP 会话之间的关系

    来自 Mozilla 网站 https developer mozilla org en US docs Web API Media Streams API https developer mozilla org en US docs We
  • Jquery,清除/清空 tbody 元素的所有内容?

    我认为这会相当简单 但似乎空方法无法清除我拥有的 tbody 如果有人知道执行此操作的正确方法 我将不胜感激 我只想删除 tbody 中包含的所有内容 到目前为止我正在尝试 tbodyid empty HTML table tbody tr
  • 加载另一个 JS 脚本后加载

    这是我的代码 very big js file lots of html stuff 问题是 这些是异步加载的 有没有办法等待第二个脚本直到第一个脚本加载 如果您使用 jQuery 有一个非常简单的方法可以通过获取脚本 https api
  • 您如何看待引导模式触发器的相应回调?

    On 引导模态 http getbootstrap com javascript modals 我们知道我们可以为触发器绑定事件 例如show or hide using show shown hide hidden 但此事件绑定仅适用于一
  • 在javascript中动态生成行?

    我是 javascript 新手 我想在按下 Tab 时动态生成行 并希望获取在动态生成的行中输入的值 以便我可以在 servlet 代码中使用这些值 这是我的html
  • 当选择下拉列表中的某些值时,取消选中复选框

    当我从下拉列表中选择某个值或用户未从下拉列表中选择任何值时 我需要取消选中复选框 我现在正在使用 Jquery 这是我现在使用的代码 但它不起作用 Script

随机推荐

  • Laravel 5 强制使用 HTTPS 登录路由到 HTTP 的问题

    Laravel 版本 Laravel 5 4 30 我遇到一个问题 我的生产代码托管在通过 HTTPS 提供服务的负载均衡器后面的 AWS Elastic Beanstalk 上 当使用内置的 auth 特征和 make auth 控制器来
  • 在 Android 上将游戏资源下载到 SD 卡

    我正在开发一个安卓游戏必须下载一些assets to the SD card使应用程序的大小尽可能小 我正在考虑使用未压缩的zip文件来捆绑所有资产 客户的一个要求是protect尽可能多地使用这些资产 作为 apk 的一部分被认为是足够的
  • Android Twilio 视频通话,唤醒应用程序并带到前台

    我正在尝试使用 Twilio Video Call 提供本机视频通话体验 这是场景 人 AAA 称人 BBB BBB 没有打开应用程序 在后台或前台 应用程序处于终止状态 手机甚至可能被锁定 当来自 AAA 的电话到达时 应用程序将打开 并
  • 投影 - 将 3d 转换为 2d

    我有问题或者很好 我不知道如何将具有 x y z 值的 3d 点转换为 2d 点 我必须绘制投影 其中我确实有点的 x y z 值 但我不知道如何将它们转换为 2d 以便我可以将它们移动到我的轴上 我一直在浏览维基和谷歌 但是我不太确定应该
  • Networkx中的多层图

    我想创建一个多层图 如附图所示 通过连接用以下代码编写的两个图 使用networkx Graph g1 nx read edgelist sample txt nodetype str pos nx shell layout g plt f
  • 春季启动。如何禁用 JPA 有条件初始化

    如果可以完全禁用 JPA Stack 的初始化 我会很伤心 在某些情况下 我的应用程序是在无法访问数据库的环境中执行的 应用程序可以在应用程序级别上幸存下来 但从技术上讲 我在数据源的初始化方面遇到了一些异常 必须有某种方法来完全禁用 JP
  • scala 中的reduceLeft(或foldLeft)与reduceRight(或foldRight)

    我正在从 coursera 学习 scala 在里面reduceLeft and reduceRight描述如下 然后在下一张幻灯片上 老师说这个代码模式被抽象为reduceLeft 我的问题 我认为第一张幻灯片中的模式是reduceRig
  • 寻找包含当前节点的 jQuery find(..) 方法

    jQueryfind http api jquery com find 遍历方法不包括当前节点 它从当前节点的子节点开始 调用将当前节点包含在其匹配算法中的查找操作的最佳方法是什么 浏览文档并没有立即引起我的注意 对于 jQuery 1 8
  • Symfony2 php.ini

    当检查时app check php Symfony2说这个Configuration file used by PHP etc php5 cli php ini然而phpinfo 显示 Apache 正在使用 etc php5 apache
  • 如何让两个模型互相引用 Django

    我有以下代码 class Game models Model title models CharField max length 50 summery models CharField max length 500 key models I
  • Laravel 5 将数据从中间件传递到控制器

    我的中间件类似于Auth 它检查 URL 模式 例如 rest 然后在请求中查找令牌 从数据库中检索其相应的用户 之后 我想将该用户保存在一个变量中 以便稍后可以在以下任何控制器中返回该用户 最好的办法是什么 中间件 public func
  • LINQ 删除重复项和结果项以获得数量总和

    我只是想检查是否有更快的方法使用 LINQ 通过 id 从重复项中删除列表 但在结果列表项中将具有一些其他属性的总和 在本例中为价格 例如 起始列表 List
  • 通过 Open Graph API 以编程方式创建 Facebook 页面

    我希望有一种方法可以使用开放图 API 创建 Facebook 页面 该文档仅显示页面存在后我可以进行的 API 调用 目前 我的网站上有电影简介 我想在 Facebook 上为每个电影简介创建一个页面 我知道我可以添加 赞 按钮 一旦单击
  • @Transactional 和 AOP 之间的混淆

    Transactional 是否在 Spring 3 中替代了 AOP 它们相同吗 我可以说 Transactional在内部实现了AOP吗 The Transactionnal注释只是声明方法 或类的所有方法 是事务性的简单方法 Spri
  • 检测 MATLAB 帮助浏览器

    我想为大型 MATLAB 应用程序创建一些 HTML 文档 主要在 MATLAB 帮助浏览器 从 11b 开始的任何版本的 MATLAB 中 查看 这将有一些自定义 CSS 但没有什么非常复杂的 但是 我还希望在其他浏览器中可以查看相同的文
  • 如何创建一个 numpy 数组来描述三角形的顶点?

    我喜欢使用 Numpy 创建要传递到的顶点数组glsl Vertices将是一个包含 3 个顶点信息的 numpy 数组 Each vertex包括 pos x y 具有 32 位的 64 位有符号浮点格式 R 分量位于字节 0 3 中 3
  • 如何查看SQL Server 2008中表空间的总使用量?

    在 SQL server 2008 中 我如何 通过 SQL 查询 找到 SQL Server 2008 R2 的特定实例 或所有实例 的表空间使用百分比 另外 获取 SQL Server 的所有命名实例的列表的最佳方法 查询 是什么 这是
  • 如何在我的开发环境中管理多个版本的 Scala 和 SBT?

    我刚刚完成了很棒的 Coursera Scala 课程 并渴望通过探索一些现有的开源项目来继续了解有关 Scala 的更多信息 不过 我在尝试让其中一些在本地运行时遇到了障碍 我有 Ruby 背景 我们使用诸如rvm or rbenv在一个
  • Android 形状背景

    是否可以在 xml 中绘制一个形状 并使用 png 作为该形状的背景 我已经有了形状 它是一个带圆角的正方形 我想为该正方形添加背景 是的 您可以使用任何形状文件作为任何视图的背景 此示例创建圆形背景 形状周围有白色和黑色边框 样本 圆角
  • 护照验证不重定向

    我正在编写一个本地注册策略 发现它不起作用 所以我退后一步 尝试对我的空集合进行身份验证 每次我提交表单都会花费大约 30 40 秒的时间 直到导致超时 我确保调用了 Passport authenticate 但似乎它没有执行任何重定向