2017-06-26 9 views
-2

私はポストマンでPOSTリクエストを介してユーザーをログインしようとするたびに、私はこのエラーを取得しておく保つ:ここ enter image description here私はJWT、パスポートを持つ既存のユーザーをログインしようとするたびに401無許可取得、およびエクスプレス

passport.use(new LocalStrategy({usernameField: 'email', passwordField: 'password'}, function(email, password, done){ 


    User.findOne({email: email}, (err, user) => { 

     if (err) return done(err); 

     if (!user){ 
      return done(null, false, {message: "User is not registered"}); 
     } 
     else { 

      const realPassword = String(user.password); 


     bcrypt.compare(password, realPassword, (err, result) => { 
      if (err) throw err; 

      if (result){ 
       console.log('result is...' + result); 
       done(null, user) 
      } 
      else { 
       console.log('result is...' + result); 
       return done(null, false, {message: 'Invalid Password'}); 

      } 

     } 

    }); 

})); 

そしてここでは、私のルータ・ファイル内のポストリクエストメソッドです:

router.post('/login', passport.authenticate('local', {session: false}), (req, res, next) => { 

    function generateUserToken(user){ 

    return jwt.sign({sub: user._id, creationDate: user.creationDate}, config.secretKey); 

} 

    if (err) throw err; 

    res.send({token: generateUserToken(user)}) 

}); 
localStrategyは、私は、ユーザーのメールアドレスとパスワードを検証できるかどうかをチェックするために作られています

UPDATE:問題を解決するためにコードを変更しました。しかし、今の代わりに不正取得の、私は404 not found error enter image description here

+0

ええ、それは愚かな間違いでした。私はそれを修正しましたが、まだ 'const'が追加されても動作しません。 – MountainSlayer

答えて

-1

を得続けることはdoesMatchの値は常にfalseですようです。

私はあなたが不足していると信じていますbcrypt.compare何も返しません。

これは非同期なので、return文を使用してresultを取得することはできません。

あなたはそれが動作するかどうか、私に教えてくださいbcrypt.compare

bcrypt.compare(password, realPassword, (err, result) => { 
    if (err) throw err; 

    // NOW YOU HAVE THE VALUE FORM THE COMPARISON 
    if (result){ 
     done(null, user) 
    } 
    else { 
     return done(null, false, {message: 'Invalid Password'}); 
    } 
}); 

からコールバック関数の内部でeverygintを配置する必要があります。

お手伝いします。

+0

私はそれを試みましたが、うまくいかないようです。あなたの助けをありがとうtho :) – MountainSlayer

+0

私は今、 '404見つからないエラー'を取得し続ける – MountainSlayer

+0

あなたはそれがうまくいかなかったのを悲しんだが、それはそうだった。新しいエラーについて...あなたは正しいルートを呼んでいますか? –

関連する問題