gpt4 book ai didi

node.js - Passport 错误 : Unknown authentication strategy "local"

转载 作者:IT老高 更新时间:2023-10-28 23:16:41 50 4
gpt4 key购买 nike

我正在开发一个 nodejs 应用程序并使用 passportjs 进行身份验证。我正在使用本地 Passport 策略。但是当我尝试登录时,出现以下错误:

Error: Unknown authentication strategy "local"
at attempt (/home/project/node_modules/passport/lib/middleware/authenticate.js:166:37)
at authenticate (/home/project/node_modules/passport/lib/middleware/authenticate.js:338:7)
at exports.authenticate (/home/project/controllers/RegistrationsController.js:87:4)
at callbacks (/home/project/node_modules/express/lib/router/index.js:164:37)
at param (/home/project/node_modules/express/lib/router/index.js:138:11)
at pass (/home/project/node_modules/express/lib/router/index.js:145:5)
at Router._dispatch (/home/project/node_modules/express/lib/router/index.js:173:5)
at Object.router (/home/project/node_modules/express/lib/router/index.js:33:10)
at next (/home/project/node_modules/express/node_modules/connect/lib/proto.js:193:15)
at /home/project/node_modules/express-flash/lib/express-flash.js:31:7

这是我的 passport-config.js 文件:

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

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({usernameField: 'emailAddress'}, new LocalStrategy(function(username, password, done) {
User.findOne({ emailAddress: username }, function(err, user) {
if(err){
return done(err);
}
if (!user) {
return done(null, false, { message: 'Email ' + username + ' not found'});
}
else{
//check if password matches and pass parameters in done accordingly
}
});
}));

以下是我的 RegistrationsController.js 文件,我的身份验证 api 所在的位置,

var passport = require('passport');

exports.authenticate = function(req, res, next){
console.log('Login request!');
passport.authenticate('local', function(err, user, info) {
console.log('In authenticate callback!');
if (err) return next(err);

if (!user) {
req.flash('errors', { msg: info.message });
res.status(500).json({message: info.message});
}
res.json(user);
})(req, res, next);
}

自过去 2 天以来一直在查看代码,但仍无法找出错误。我已经安装了 passportpassport-local 模块。任何帮助将不胜感激。

最佳答案

此代码中存在语法错误。 usernameField: 'emailAddress' 必须像这样在 LocalStrategy 构造函数中传递...

passport.use(new LocalStrategy({
usernameField: 'email'
}, yourAuthenticateFunction));

关于node.js - Passport 错误 : Unknown authentication strategy "local",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21454254/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com