Я использую паруса. js v1.2.3 для разработки веб-приложений. Вместо традиционных (req, res) действий контроллера, я использую тип sails action2. Также я использую паспорт. js для аутентификации пользователя. При вызове метода passport.authenticate из manager-login. js я получаю {message: 'Missing credentials'}. Детали кода приведены ниже.
Файл: config / маршруты. js
'POST /chatmanagerlogin' : { action: 'admin/user/manager-login'}
Файл: api / controllers / admin / user / manager-login. js
fn: async function (inputs,exits) {
console.log(inputs); // { opMainId: 'mytestacc@xyz.com', 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;
})(),
},
};