{сообщение: «Отсутствуют учетные данные»} для проверки подлинности паспорта на основе имени пользователя и пароля в парусах. js - PullRequest
0 голосов
/ 07 января 2020

Я использую паруса. 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;
    })(),
  },
};
...