2016-01-11 15 views
13

के साथ 400 खराब अनुरोध मैं अपने कोड के लॉगिन फॉर्म में पासपोर्ट को एकीकृत करने की कोशिश कर रहा हूं। क्लाइंट साइड कॉलिंग सर्वर साइड काम करता है जब तक कि मैं पासपोर्ट को कॉल नहीं करता। अनुरोध में प्रमाणीकरण, 400 खराब अनुरोध वापस कर दिया गया था। मुझे यहां क्या समझ नहीं आ रहा है।पासपोर्ट स्थानीय रिटर्न त्रुटि कोणीय

एचटीएमएल

 <div> 
      <div class="row"> 
       <div class="input-field col s12"> 
        <input id="user-email" type="text" ng-model="user.email"> 
        <label for="user-email">Your email address</label> 
       </div> 
      </div> 
      <div class="row"> 
       <div class="input-field col s12"> 
        <input id="user-password" type="password" ng-model="user.password"> 
        <label for="user-password">Your password</label> 
       </div> 
      </div> 
      <div id="login-button-panel" class="center-align"> 
       <button class="btn" id="login-btn" ng-click="vm.login(user);">Login</button> 
      </div> 
      <div class="section center"> 
       <a class="modal-trigger">Forgot password?</a> 
      </div> 
     </div> 

जे एस

$http.post('/api/login',user).success(function(result){ 
    console.log(result) 
}) 

server.js

passport.use(new LocalStrategy(
    function(username, password, done) { 
     return done(null, false, {message:'Unable to login'}) 
    } 
)); 
passport.serializeUser(function(user,done){ 
    done(null,user); 
}); 

passport.deserializeUser(function(user,done){ 
    done(null,user); 
}); 
app.post('/api/login', passport.authenticate('local'), function(req,res){ 
    res.json(req.user) 
}); 

उत्तर

30

गलत अनुरोध यूज़रनेम और पासवर्ड पर पहुंच गुम के लिए पासपोर्ट से फेंक दिया गया था।

यह फ़ील्ड username और password के लिए शरीर और यूआरएल क्वेरी की जांच कर रहा है। यदि दोनों में से falsy है अनुरोध स्थिति 400

साथ अस्वीकार कर दिया है अपने LocalStrategy आप अतिरिक्त तर्क में विकल्पों में से सेट प्रदान कर सकते हैं विकल्प usernameField और/या passwordField का उपयोग कर अलग नाम क्षेत्रों का चयन करने के लिए निर्माता बनाने पर। अपने विशेष मामले में यह इस तरह दिखेगा:

passport.use(new LocalStrategy(
    {usernameField:"user-email", passwordField:"user-password"}, 
    function(username, password, done) { 
     return done(null, false, {message:'Unable to login'}) 
    } 
)); 
+0

देर से उत्तर के लिए खेद है। और हाँ आप सही हैं। धन्यवाद! –

+2

विकल्प ऑब्जेक्ट लोकलस्ट्रेटी कन्स्ट्रक्टर में पहला तर्क होना चाहिए, न कि 'passport.use' विधि में दूसरा तर्क। सलाह के लिए – keeri

+0

@ फ़किड्स धन्यवाद। ठीक कर दिया। – cepharum

3

मेरे मामले (एक्सप्रेस 4.0) में, मैं body-parser

0

यह त्रुटि का उपयोग किए बिना HTML डोम तत्वों का उपयोग करने की कोशिश कर रहा से आता है का उपयोग नहीं किया गया था शरीर-पार्सर

शरीर पार्सर एक मॉड्यूल सकता है जो आपको एचटीएमएल दस्तावेज़ पेड़ पार विशेष रूप से इनपुट फ़ील्ड के मामले में प्रतिक्रिया पढ़ने के लिए है

उपयोग -

var parser = require('body-parser'); 
var urlencodedParser = parser.urlencoded({extended : false}); 


    app.post("/authenticate", urlencodedParser, passport.authenticate('local'), function (request, response) 
    {   
     response.redirect('/');      
    }); 
संबंधित मुद्दे