2017-02-22 84 views
1

嗨,我收到400错误的请求错误,每次我使用护照本地。请告诉我我在哪里做错了什么。护照本地返回错误400错误的请求与邮递员

我想打电话给我/登录路由使用邮递员,但每次我得到400错误的请求

下面的错误时,是我的代码:

passport.use(new LocalStrategy(
{ 
    email:'email', 
    password:'password' 
}, 
function(email, password, done){ 
    adminModel.getAdmin(email, function(err, admin){ 
     if(err){ return done(err);} 
     if(!admin){ 
      return done(null, false, {message: 'Invalid Username.'}); 
     } 
     adminModel.comparePassword(password, admin.password, function(err, isMatch){ 
      if(err){return done(err);} 
      if(isMatch){ 
       return done(null, admin); 
      }else{ 
       return done(null, false, {message: 'Invalid Password'}); 
      } 
     }) 
    }); 
} 
)); 

passport.serializeUser(function(admin, done){ 
    done(null, admin._id); 
}); 

passport.deserializeUser(function(id, done){ 
    adminModel.findById(id,function(err, admin){ 
     done(err, admin); 
    }); 
}); 
router.post('/login', passport.authenticate('local'),function(req, res){ 
res.send(req.body); 
}); 

回答

1

从你给予它什么不可能肯定地说,但我会说十次中有九次HTTP Bad Request来自this row in passport-local,即。该请求不包含凭据。

显然,你试图告诉含凭证的字段为emailpassword当你定义的:

{ 
    email:'email', 
    password:'password' 
} 

这些选项not supported由中间件。您应该通过

{ 
    usernameField: 'email', 
    passwordField: 'password' 
} 

改为。

另一个常见原因是没有使用body-parser,或者您从Postman发送的请求未定义正确的标头以匹配数据。