节点护照错误:未知的身份验证策略“本地登录”

2024-04-27

我一直在尝试在nodejs上使用passport进行本地身份验证工作,据我所知,我的所有代码都是正确的,但我不断收到关于“未知身份验证策略”的相同恼人错误,所以也许其他人可以帮助我解决这个问题我的代码如下所示。

这是我在nodejs中配置护照的代码。

var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var User = require('../models/user');

module.exports = function(passport) {


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

    passport.deserializeUser(function(id, done) {
        User.findById(id, function(err, user) {
            done(err, user);
        });
    });

    passport.use('local-signup', new LocalStrategy({

        usernameField : 'username',
        passwordField : 'password',
        passReqToCallback : true
    },

    function(req, username, password, done) {

        process.nextTick(function() {

            User.findOne({ 'local.username' : username}, function(err, user) {
                if (err)
                    return done(err);

                if(user) {
                    return done(null, false, req.flash('signupMessage', 'That Username is already taken.'));
                }

                else {

                    var newUser = new User();

                    newUser.local.username = username;
                    newUser.local.password = newUser.generateHash(password);


                    newUser.save(function(err) {
                        if(err)
                            throw err;

                        return done(null, newUser);
                    });
                }
            });
        });
    }));



    passport.use('local-login', new LocalStrategy({

        usernameField : 'username',
        passwordField : 'password',
        passReqToCallback : true
    },
    function(req, username, password,done) {

        User.findOne({ 'local.username' : username}, function(err, user) {

            if(err)
                return done(err);

            if(!user)
                return done(null, false, req.flash('loginMessage', 'No user found.'));

            if(!user.validPassword(password))
                return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.'));

            return done(null, user);
        });
    }));

};

这是服务器端的帖子。

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

这是 html 文档中的表单

<div id="signin">
        <form class="form-horizontal" method="POST" action="/signin">
            <div class="form-group">
            <label class="control-label col-sm-2">Username:</label> 
            <div class="col-xs-3">
                <input type="text" class="form-control"></input><br>
            </div>
            </div>
            <div class="form-group">
            <label class="control-label col-sm-2">Password:</label>
            <div class="col-xs-3">
                <input type="password" class="form-control"></input><br><br>
            </div>
            </div>
            <div class="form-group">
            <div class="col-sm-offset-2 col-sm-10">
                <button type="submit" class="btn btn-default btn-lg">Sign In</button><br><br>
            </div>
            </div>
        </form>

        <div id="accountlinks">
            <a href="/signup">Create Account</a><br>
            <a href="">Forgot Password</a>
        </div>
    </div>

谁能告诉我我做错了什么来帮助我。谢谢


require('./config/passport')(passport);

更改文件的路径。如果不进行此操作,护照的配置将不会传递到路线。

以下是该行应位于的位置的片段:

// server.js

// configuration
===============================================================
mongoose.connect(configDB.url); // connect to our database

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

节点护照错误:未知的身份验证策略“本地登录” 的相关文章

  • 尝试通过 knex 连接到 Mssql 服务器

    我正在尝试使用 knex 连接到远程数据库 但收到此错误 乏味已弃用默认值options encrypt将会改变自false to true 请通过false如果您想保留当前行为 请明确地表示 在node modules mssql lib
  • mongoDB 中的游标隔离

    首先请原谅我问了一个愚蠢的问题 但我是 mongodb 和学习游标的新手 我有一个问题 为什么我们需要游标隔离 手册说 如果文档发生更改 对文档的干预写入操作可能会导致游标多次返回该文档 我无法理解这一点 如果有人可以提供更多说明或举一些例
  • npm install 冻结并显示 IdealTree:chatting: sill IdealTree buildDeps

    当我安装任何东西时 npm 冻结了 即使删除 package lock json 也没有任何变化 这里有一个类似的问题 https stackoverflow com questions 50522376 npm install hangs
  • Node Js:Redis 作业在完成其任务后未完成

    希望你们做得很好 我在我的 Nodejs 项目中实现了 BullMQ Bull 的下一个主要版本 来安排发送电子邮件的作业 例如 发送忘记密码请求的电子邮件 所以 我编写了如下所示的代码 用户服务 await resetPasswordJo
  • 如何在 Express 中模拟中间件以跳过单元测试的身份验证?

    我在 Express 中有以下内容 index js var service require subscription service var auth require auth auth service var router expres
  • RoboMongo:不显示所有文档

    当我打开集合时 它仅显示前 50 个文档 而不是全部文档 如何使 RoboMongo 显示集合中的所有文档 最好是自动 罗博蒙戈结果 https i stack imgur com K5fn8 png 2019 年 12 月 6 日更新 最
  • Mongoose 使用 GeoJSON 点作为查询参数调用 geoNear 不起作用

    给定一个为包含 GeoJSON 位置的文档定义的模式 var BranchSchema new Schema location type type String required true enum Point LineString Pol
  • 使用 python-shell 持续交换数据

    我需要从节点运行一些 python 脚本 由于我的 python 脚本使用复杂的结构 我认为如果只加载这些结构一次 然后使用这些结构运行一些特定的脚本 任务 会更好 在节点上 我想永远运行一个脚本 或者直到我说它可以终止 并继续向该脚本发送
  • 使用 Sequelize 计算关联条目数

    我有两张桌子 locations and sensors 每个条目在sensors有一个外键指向locations 使用 Sequelize 如何获取所有条目locations以及条目总数sensors与每个条目相关联locations R
  • 枚举nodejs中的系统驱动器

    有没有办法检索计算机上所有逻辑驱动器的驱动器名称 我查看了 fs api 但从那里我只能枚举给定目录的文件和目录 我不确定 驱动器名称 是什么意思 如果您的意思是以下形式的驱动器 PhysicalDriveN 我遇到了同样的问题并实现了这个
  • 在 iframe/对象标签内运行时更新初始路由器 url

    我目前正在容器 主 Vue 应用程序的对象标签 iframe 也可以工作 内渲染 Vue 应用程序 首先 我设置一个文件服务器 为该容器或请求的子应用程序提供服务 以在 div 内呈现 为了简单起见 我将仅显示 Node Express 服
  • 错误:子进程失败,退出,错误号 48

    错误 48 对我来说是一个新错误 我在尝试输入 mongo 时也遇到错误 Error network error while attempting to run command isMaster on host 127 0 0 1 2701
  • 如何在 NodeJS 中使用 PhantomJS 模拟鼠标悬停或在页面上运行 JS 功能

    NodeJS PhantomJS 使用 Cheerio 进行内容解析 需要解析包含动态加载的div 提示 的网页 该事件可以在许多表 td 上 这是一个示例 当我将鼠标悬停在特定的 td 上时 我看到这个带有数据的橙色块 它动态加载了函数
  • 使用 MongoDB docker 镜像停止虚拟机而不丢失数据

    我已经在 AWS EC2 上的虚拟机中安装了官方的 MongoDB docker 映像 并且数据库上已经有数据 如果我停止虚拟机 以节省过夜费用 我会丢失数据库中包含的所有数据吗 在这些情况下我怎样才能让它持久 有多种选择可以实现此目的 但
  • 在 ExpressJS 中通过管道传送远程文件

    我想读取远程图像并显示它 我可以保存文件 但无法正确显示代码 理想情况下 我只想直接传递文件而不进行处理 不确定是否需要 tmp 文件步骤 此代码不显示任何内容 没有错误 我也尝试了 res pipe response var url ht
  • NodeJS 内存增长 - (系统)内存泄漏?

    我在我们的生活环境中遇到了奇怪的内存泄漏 其中 system 堆中的对象不断增长 堆转储 Here is a memory dump where the memory usage grew to 800MB 请注意 该内存保留在Genera
  • 重命名($project)数组中的字段 - MongoDB [重复]

    这个问题在这里已经有答案了 我有一个类似以下的文件 id 59ba903dacea50d0d7d47168 sections id 59d9dd7947ce651544c5d4c1 sectionName Section 1 id 59d9
  • 在 NPM 上捆绑并发布客户端 Web 代码

    我制作了一个 JavaScript 文件 假设它的内容是这样的 let myCoolAlert str gt alert str in a different js file SO doesn t allow you to cross fi
  • sh:1:节点:权限被拒绝

    尝试在 ubuntu 18 04 上运行此命令 npm install g pngquant bin 但我得到了这个错误 fetchMetadata sill resolveWithNewModule email protected cdn
  • 垃圾收集器不适用于 NodeJS / Chrome 中的类型化数组

    我最初将其记录为原项目中的一个问题 https github com nodejs help issues 3590 它立即转移到帮助主题 没有很好的解释 所以现在我想在这里提问 如果我们在 NodeJS v14 v16 v17 中运行以下

随机推荐

  • 即使设置了 cookie,RabbitMQ 身份验证也会失败

    我最近在运行 lattePanda 的 Windows 10 上安装了带有 ErlanOTP 的rabbitmq 我运行rabbitmqctl status并收到以下错误 C Program Files RabbitMQ Server ra
  • 如何在 Symfony 4 表单的输入上添加占位符?

    在我的 Symfony 4 表单中 我尝试为我的输入获取占位符 我尝试了以下操作 但收到错误消息 表明这是不允许的 有什么想法我还能如何实现这一目标吗 gt add firstname TextType class label gt Vor
  • 从PHP7.4升级到PHP8,是否可以忽略某些错误

    我们有一个巨大的代码库 在访问未定义的变量或数组键时 我们忽略了 php7 的通知 例如 somethingThatMayNotExist REQUEST somethingThatMayNotExist PHP8 现在会抛出错误 我知道我
  • 哪个开源许可证没有分叉[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我记得读过有关开源许可证的文章 该许可证不授予分叉权限 我不记得它的名字了 我想在这里问可能比浏览整个
  • 仅使用 Hunit 在 Haskell 中创建并运行最小测试套件

    我对 Haskell 比较陌生 所以如果我的术语不太正确 请提前道歉 我想为一个非常简单的项目实现一些简单的单元测试 通过管理cabal 我注意到这个非常相似的问题 https stackoverflow com questions 118
  • 如何在 Rails 3 的功能测试中使用 polymorphic_path

    我正在尝试使用polymorphic path在 Rails 3 的功能测试中 一开始我会得到 NoMethodError undefined method polymorphic path for
  • 在R中使用grepl完成单词匹配

    考虑以下示例 gt testLines lt c I don t want to match this This is what I want to match gt grepl is testLines gt 1 TRUE TRUE 不过
  • 有条件地使用按位运算符

    条件运算符如何使用按位运算符表示 这是一个家庭作业问题 我必须仅使用按位运算来实现条件运算符 那就很简单了 如果if允许使用语句 但它必须是严格的按位运算符 仅运营商 gt gt and lt lt 可以使用 不if可以使用语句或循环 该函
  • 编辑距离(Levenshtein距离)递归自上而下实现的复杂性

    I have been working all day with a problem which I can t seem to get a handle on The task is to show that a recursive im
  • 将时间戳合并到自定义时间段中

    我对熊猫相当陌生 并且遇到了障碍 我有一个包含时间戳的数据帧 我想在我的数据框中添加一列 其中包含自定义期间名称 字符串 例如 df pd DataFrame pd date range 01 01 00 00 periods 72 fre
  • 计算 SQL Server 存储过程中删除的行数

    在 SQL Server 2005 中 有没有一种方法可以删除行并告知有多少行actually删除了 我可以做一个select count 条件相同 但我需要它完全值得信赖 我的第一个猜测是使用 ROWCOUNT变量 但尚未设置 例如 de
  • 如何在Python中使用JWK解码JWT令牌

    我正在开发一个应用程序 其中所有 API 都受 OAuth 保护 我已从客户端收到访问令牌 但无法解码和验证令牌 我有以下格式的 JWK keys kty RSA x5t S256 Some value e Some Value x5t S
  • 以编程方式启用和禁用自动旋转?

    有很多很酷的小部件可以在手机上启用和禁用自动旋转 禁用它会在手机上的所有应用程序中关闭它 他们如何实现这一目标有什么想法吗 这应该可以为你解决问题 import android provider Settings public static
  • 如何在android中实现表面视图的双击

    请告诉我如何实现双击SurfaceView在 Android 中使用手势检测器 有人可以提供代码示例吗 你可以尝试以下 实际上我测试了这个并且效果很好 1 Extend GestureDetector SimpleOnGestureList
  • Dijkstra算法的时间复杂度是多少

    Dijkstra V E S O 1 for each vertex v V O V d v O 1 d source 0 O 1 while S V O V v non visited vertex with the smallest d
  • 按 ID 合并两个不均匀的数据框并填充缺失值

    我是 r 新手 这是我的第一个论坛问题 我正在尝试合并两个数据集 如下所示 df1 lt data frame ID letters 1 5 x 5 9 y c NA 6 5 NA NA gt df1 ID x y 1 a 5 NA 2 b
  • pandas/numpy int64 中意外的 32 位整数溢出(python 3.6)

    让我从示例代码开始 import numpy from pandas import DataFrame a DataFrame nums 2233 23160 43608 a nums numpy int64 a nums print a
  • 重载解析:这如何不含糊不清?

    假设我们有这段代码 是从一个单独的问题复制的 namespace x void f class C void f using x f f lt 名字f在指定的行上明确指的是x f 至少根据 gcc 和 clang 为什么是x f优先于x C
  • Angularjs如何从外部访问范围数据

    我有这个轮询器函数 每 10000 毫秒轮询一次数据 这很好 但是我需要能够从外部访问变量 以便我可以使用splice功能 服务代码 use strict service to get data for analytics page ang
  • 节点护照错误:未知的身份验证策略“本地登录”

    我一直在尝试在nodejs上使用passport进行本地身份验证工作 据我所知 我的所有代码都是正确的 但我不断收到关于 未知身份验证策略 的相同恼人错误 所以也许其他人可以帮助我解决这个问题我的代码如下所示 这是我在nodejs中配置护照