【发布时间】:2017-10-21 13:10:21
【问题描述】:
我正在使用 passport.js 来验证和处理我的项目中的会话。
我使用电子邮件从护照进行身份验证,但是当在验证时调用 done 时,我得到错误 done不是函数。
at Promise.<anonymous> (/Users/sultan/Desktop/too2/controllers/users.js:39:28)
at Promise.<anonymous> (/Users/sultan/Desktop/too2/node_modules/mongoose/lib/promise.js:120:8)
代码
// LOCAL LOGIN =============================================================
passport.use('local-login', new LocalStrategy({
usernameField : 'email',
passwordField : 'password'
//passReqToCallback : true // allows us to pass in the req from our route (lets us check if a user is logged in or not)
},
function( email, password, done) {
if (email)
email = email.toString().toLowerCase();
// asynchronous
process.nextTick(function() {
User.findOne({ email: email }, function(err, user) {
// if there are any errors, return the error
if (err)
return done(err);
// if no user is found, return the message
if (!user)
//(/Users/sultan/Desktop/too2/controllers/users.js:39:28)
return done(null, false, {message: 'No user found.'});
if (!user.validPassword(password))
return done(null, false, {message: 'Oops! Wrong Password'});
// all is well, return user
else
return done(null, user);
});
});
}));
此错误的原因是什么,我该如何解决?
【问题讨论】:
-
您不能将
done声明为函数... -
如何不将“完成”声明为函数
标签: javascript node.js authentication passport.js