2017-02-22 1 views
1

안녕하세요 나는 여권을 사용할 때마다 400 개의 잘못된 요청 오류가 발생합니다. 내가 뭐 잘못하고 있는지 말해줘. 당신은 그것의 불가능을 준 바로는Passport local returns 오류 우편 배달부와 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

:

내/로그인 경로를 사용하여 우편 배달부하지만 난 400 잘못된 요청 아래

의 오류를 얻고마다 호출하려고 내 코드입니다 확실히 말할 수는 있지만, 열 번 중 9 번을 말할 것입니다. HTTP Bad Requestthis row에서 passport-local으로옵니다. 요청에 자격 증명이 포함되어 있지 않습니다. 당신이를 정의한 경우

은 분명히 당신은 자격 증명을 포함하는 필드 emailpassword을 것을 이야기하려고 노력 해요 :

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

이 옵션은 미들웨어에 의해 not supported 있습니다. 대신

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

을 전달해야합니다.

또 다른 일반적인 이유는 body-parser을 사용하지 않는 것입니다. 그렇지 않으면 우편 배달부에서 보내는 요청에서 데이터와 일치하는 올바른 헤더를 정의하지 않습니다.

관련 문제