2016-04-18 6 views
0

Ich bin neu in javascript.Ich habe ein kleines Projekt gestartet, wo ich Benutzer authentifizieren will.Für diese habe ich Passport lokale Strategie verwendet.Aber die Post Anfrage ich gesendet auf Login-Taste gibt mir Fehlercode 400 dh Schlecht Anfrage.Ich weiß nicht, was ich falsch mache.Ich habe ähnliche Frage gesucht, konnte aber keine befriedigende Antwort auf mein Problem erhalten. Nach Code-Schnipsel.Passport Local Authentication

login.html

<md-content layout-margin class="center-form"> 
    <section class="md-whiteframe-7dp" flex> 
      <div flex layout="column" layout-padding layout-margin> 
      <form method="post" name="loginForm" layout="column"> 

        <md-input-container> 
        <label>Email</label> 
        <input ng-model="user.email" id="user" type="email" ng-pattern="/^[A-z]+[a-z0-9._][email protected][a-z]+.[a-z.]{2,5}$/" required> 
        </md-input-container> 

        <md-input-container> 
        <label>Password</label> 
        <input ng-model="user.password" id="password" name="password" type="password" required> 
        </md-input-container> 

        <md-button type="submit" ng-disabled="loginForm.$invalid" ng-click="login(user)" class="md-raised md-primary">Login</md-button> 
      </form> 
     </div> 
    </section> 

Login.js

app.controller('LoginCtrl',function ($scope,$http) { 

     $scope.login=function(user){ 
     console.log(user); 
     $http.post('/login',user) 
     .success(function (response) { 
     console.log(response); 
    }) 
    } 
}); 

Server.js

//Require Modules 
var express=require("express"); 
var config = require('./config'); 
var path = require('path'); 
var routes=require('./routes'); 
var bodyParser = require('body-parser'); 
var multer = require('multer'); 
var upload = multer(); // for parsing multipart/form-data 
var passport=require('passport'); 
var LocalStrategy=require('passport-local').Strategy; 
var cookieParser= require('cookie-parser'); 
var session=require('express-session'); 


//Init Express App 
var app=express(); 

//Express sessions 
app.use(session({ 
secret:"this is the secret key", 
resave:true, 
saveUninitialized:false 
})); 
//Cookie Parser 
app.use(cookieParser()); 

app.use(passport.initialize()); 
app.use(passport.session()); 

/*Use Middleware (Between header to hTTP actions)*/ 
app.use(bodyParser.json()); // for parsing application/json 
app.use(bodyParser.urlencoded({ extended: true })); // for parsing   application/x-www-form-urlencoded 

//passport startegy 
passport.use(new LocalStrategy(function(username,password,done){ 
console.log("username:"+username); 
console.log("password:"+password); 
return done(null,false,{message:'unable to login'}); 
})); 


passport.serializeUser(function(user, done) { 
done(null, user.id); 
}); 

passport.deserializeUser(function(id, done) { 
done(null, id); 
}); 

// serve the static public files 
app.use(express.static(path.join(__dirname, '../public'))); 
app.use('/',routes); 

Route.js

var express=require('express'); 
    var router=express.Router(); 
    var passport=require('passport') 

    router.post('/login',passport.authenticate("local"),function(req,res){ 
     console.log("Logged In"); 
     console.log(req.body); 
    }); 

    module.exports=router; 

Ich habe Dokumentation von Passport lesen js Aber es wäre nützlich für mich, wenn jemand es in einfachen Worten erklären könnte, warum 400 Bad Anfrage erfolgt auf Anmeldung click.I Post-Anforderung gemacht hat auf Klick auf den Login-Button.

Antwort

0

Wenn Ihre Formularfelder sind nicht die Standardwerte username und password, wie sie es nicht sind, müssen Sie Optionen zur Verfügung zu stellen, die die Feldnamen passport-local wie angegeben in the documentation enthalten. Andernfalls werden Sie receive HTTP Bad Request wegen fehlender Login-Informationen.

+0

Vielen Dank @Vesse .Ich habe meinen Fehler gefunden.Das Problem wurde behoben. –