{消息:“缺少凭据”}在sails.js中用于基于用户名/密码的护照认证

问题描述 投票:0回答:1

我正在将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;
    })(),
  },
};
node.js sails.js passport.js
1个回答
0
投票
chatOperators.findOne({opMainId:username},function (err,user)

我的意思是,我不认为opMainId是您在chatOperators中寻找的正确字段。是吗?是否应该相反:username:opMainId?

© www.soinside.com 2019 - 2024. All rights reserved.