2016-04-18 11 views
0

私はjavascriptの初心者です。私はユーザーを認証したい小さなプロジェクトを開始しました。これはPassportローカル戦略を使用しています。しかし、ログインボタンで送信された投稿要求は私にエラーコード400私は何をしているのか分かりません。私は同様の質問を検索しましたが、私のproblem.Belowに満足のいく答えを得ることができませんでしたコードスニペットです。Passportローカル認証

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; 

上のポストの要求をした私は、パスポートの文書を読んでいるのjsしかし、400不正な要求がログインclick.I上で発生する理由誰かが簡単な言葉でそれを説明することができれば、それは私に、より有用であろうログインボタンをクリックします。

答えて

0

そうでないようなあなたのフォームフィールドは、デフォルトusernamepasswordされていない場合、あなたは述べin the documentationようpassport-localにフィールド名が含まれているオプションを提供する必要があります。そうしないと、ログイン情報がないためreceive HTTP Bad Requestになります。

+0

ありがとうございます@vesse。私は間違いを発見しました。問題は解決されました。 –

関連する問題