2017-05-16 30 views
0

routes.jsエラー:400不正な要求

//require the passport strategy from the folder in the project. 
    var passport = require('passport'); 
    var x = require('./usefile/file'); 

var requireLogin = passport.authenticate('local',{session: false}); 

module.exports = function(app){ 

var auth = express.Router(); 

app.use('/api/auth', auth); 

auth.post('/login', requireLogin, function(req, res){ 
    x.login(req, res)}); 
} 

passport.js

var passport = require('passport'); 
var JwtStrategy = require('passport-jwt').Strategy; 
var ExtractJwt = require('passport-jwt').ExtractJwt; 
var LocalStrategy = require('passport-local').Strategy; 
var config = require('./auth'); 
var User = require('../models/user'); 

var localOptions = { 
    usernameField: 'email', 
}; 

var localLogin = new LocalStrategy(localOptions, function (email, password, done) { 
    User.find(
     { email: email }, function (err, user) { 
      if (err) { 
       return done(err); 
      } 
      if (!user) { 
       return done(null, false, { error: 'Login failed,Please try again.' }); 
      } 
      if (!isMatch) { 
       return done(null, false, { error: 'Login failed, Please try again.' }); 
      } 
      user.comparePassword(function(password, isMatch){ 
       if(err){ 
        return done(err); 
       } 
       if(!isMatch){ 
        return done(null, false, {error:'Login failed, Please try again.'}); 
       } 
       return done(null, user); 
      }); 
     }); 
}); 
passport.use(localLogin); 

注:私のコードは、パスポートの認証に使用されrequireLoginを使用していないので、それが表示されます400不良要求エラー。

私はそこにパスポートローカルのAPIドキュメントを参照してきた私が見つかりました:

app.post('/login', 
     passport.authenticate('local', { failureRedirect: '/login' }), 
     function(req, res) { 
     res.redirect('/'); 
     }); 
ここ

failureRedirect: '/login'それが何を意味するのか?

助けてください。あなたのコードを見ることによって

+0

400は、進行中のリクエストが正しくないことを意味します。どんなリクエストを送信していますか? –

+0

フロントエンドから 'http:// localhost:8080/api/auth/login'でフロントエンドからの投稿要求を送信しています。これはコードのデバッグ中に見たリクエストを送信しています。この' requireLogin 'は読まれていません。今、これをデバッグする方法はありません。 – Aditya

+0

@ ParthGhiyaこのコードを私のコードでご覧ください。 'app.use( '/ api/auth'、auth)' – Aditya

答えて

1

、また、私は認証がpassport.js

を使用して作業を行うためにどこでもあなたのコードでこの localOptionsの使用状況を見ることができなかった、あなたは var localOptions宣言で passwordFieldを持っていないようです

必要に応じてコードを更新すると、400の不正なリクエストエラーを克服できます。

これが役立ちますように!

+0

私はパスワードとlocalOptinsの使用で私のコードの残りの部分を実装しました。同じエラーが表示されます。 @David R – Aditya

+0

最新のコード変更を投稿してください。 –

+0

@AdityaJain 'localOptions'に' usernameField'しかなく、 'passwordField'を持っていて、' new LocalStrategy(.... 'call。 –

関連する問題