Node.js Passport:未知身份验证策略“;“本地”;

Node.js Passport:未知身份验证策略“;“本地”;,node.js,authentication,passport.js,Node.js,Authentication,Passport.js,我是NodeJS新手,我尝试构建一个登录/注册系统。注册工作正常,但我目前无法登录 我发现了一个使用passport和nodejs的示例应用程序,因此基于这个示例,我构建了注册表单和登录表单。 当我尝试登录时,我得到一个“未知身份验证策略”本地“错误”。谁能解释我做错了什么 我的代码 (编辑:添加了对答案/注释和文件名的一些更改) Express-config(config/Express.config.js) Passport配置(config/auth.config.js) 本地策略(/c

我是NodeJS新手,我尝试构建一个登录/注册系统。注册工作正常,但我目前无法登录

我发现了一个使用passport和nodejs的示例应用程序,因此基于这个示例,我构建了注册表单和登录表单。

当我尝试登录时,我得到一个
“未知身份验证策略”本地“错误”
。谁能解释我做错了什么

我的代码 (编辑:添加了对答案/注释和文件名的一些更改)

Express-config(config/Express.config.js) Passport配置(config/auth.config.js) 本地策略(/config/strategies/Local strategy.js) 验证控制器(仅登录)(/controllers/Auth.Controller.js)
您忘记在
app.js
中导入passport配置文件

初始化
护照后导入
护照配置

app.use(passport.initialize());
app.use(passport.session());
// Add the line below, which you're missing:
require('./path/to/passport/config/file')(passport);

希望这能有所帮助。

我这样做过,效果很好

$npm本地安装passport


这将修复错误。创建新的LocalStrategy时需要使用“local”

passport.use('local', new LocalStrategy({
    usernameField:'useName',
    passwordField: 'password',
    passReqToCallback: true

谢谢我忘了复制密码,但我没有(护照)部分。但是现在我得到一个require(…)不是函数错误。在您的passport配置文件中,
module.exports.init
是什么,不应该是
module.exports=function(passport)
更改为module.exports=function(passport)。应用程序将立即启动,但我收到相同的错误“未知身份验证策略”本地“Haa。工作我将代码从/strategies/local-strategy.js移到auth.config,这与require edit结合在一起,就是诀窍<代码>类型错误:passport不是一个函数
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var mongoose = require('mongoose');
var User = mongoose.model('User');

module.exports = function () {
    console.log("LocalStrategy called");
    passport.use(new LocalStrategy({
        usernameField : 'username',
        passwordField : 'password'
    },
    function(username, password, done) {
        User.authenticate(username, password, function(err, user) {
            if (err) {
                return done(err);
            }

            if(!user) {
                return done(null, false, {message: 'Invalid username or password'});
            }

            return done(null, user);
        })
    }))
}
module.exports.loginUser = function(req,res, next) {
    console.log("Auth.config", path.join(__dirname, 'strategies', 'local-strategy'))
   passport.authenticate('local', function (err, user, info) {
       if (err || !user) {
           console.log("Error", info);
           return res.status(400).send(info);
       }

       req.logIn(user, function(err) {
           if (err) {
              return next(err);
              // return res.status(404).send("Username or password incorrect");
           }
       })

       res.status(200).json(user);
   })(req, res, next);
}
app.use(passport.initialize());
app.use(passport.session());
// Add the line below, which you're missing:
require('./path/to/passport/config/file')(passport);
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy; /* this should be after passport*/



 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);
    });
  }
));
passport.use('local', new LocalStrategy({
    usernameField:'useName',
    passwordField: 'password',
    passReqToCallback: true