我正在将sails.js v1.2.3用于我的Web应用程序开发。取而代之的是传统的(req,res)控制器动作,我使用的是sails action2类型。另外,我正在使用passport.js进行用户身份验证。从manager-login.js调用password.authenticate方法时,我收到了{消息:“凭证丢失”}。代码详细信息如下。
文件:config / routes.js
'POST /chatmanagerlogin' : { action: 'admin/user/manager-login'}
文件:api / controllers / admin / user / manager-login.js
fn: async function (inputs,exits) {
console.log(inputs); // { opMainId: '[email protected]', opPassword: 'welcome' }
const passport = require('passport');
passport.authenticate('local',function (err,user,info){
if(info){
console.log(info); // { message: 'Missing credentials' }
}
console.log(user); // Giving false
})(inputs,exits);
}
文件:config / passport.js
var passport = require('passport'),
LocalStrategy = require('passport-local').Strategy,
bcrypt = require('bcrypt');
//Authentication strategies
passport.use(new LocalStrategy(
{
usernameField: 'opMainId',
passwordField: 'opPassword'
},
function (username,password,done){
chatOperators.findOne({opMainId:username},function (err,user){
if (err) { return done(err); }
if(!user){
return done(null,false,{message :'incorrectUser'});
}
bcrypt.compare(password,user.password,function (err,res){
if(err) {
return done(err);
}
if(res === false){
return done(null,false,'incorrectPassword');
}
else{
return done(null,user);
}
});
});
}
));
文件:config / http.js
middleware: {
order: [
'cookieParser',
'session',
'passportInit',
'passportSession',
'bodyParser',
'compress',
'poweredBy',
'router',
'www',
'favicon',
],
bodyParser: (function _configureBodyParser(){
var skipper = require('skipper');
var middlewareFn = skipper({ strict: true });
return middlewareFn;
})(),
passportInit : (function(){
var passport = require('passport');
var reqResNextFn = passport.initialize();
return reqResNextFn;
})(),
passportSession : (function(){
var passport = require('passport');
var reqResNextFn = passport.session();
return reqResNextFn;
})(),
},
};
chatOperators.findOne({opMainId:username},function (err,user)
我的意思是,我不认为opMainId是您在chatOperators中寻找的正确字段。是吗?是否应该相反:username:opMainId?