2017-06-04 13 views
1

私はユーザー認証を行うためにangularJS +パスポートを使用しています。 HTML:クライアント側でPassportローカル戦略が呼び出されていない

<div ng-controller="logincontroller"> 
<form> 
Email:<input type="text" ng-model="user.email"/> 
Password:<input type="password" ng-model="user.password"/> 
<div ng-click=loginUser()>Submit</div> 
</form> 
</div> 

のjavascript:app.js

var bodyParser = require('body-parser'); 
var cookieParser=require('cookie-parser'); 
var passport=require('passport'); 
var LocalStrategy=require('passport-local').Strategy(); 
var session=require('express-session'); 
app.use(express.session({secret:"flibbertygibbit"})); 
app.use(cookieParser()); 
app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(bodyParser.json()); 
passport.use(new LocalStrategy(
    {usernameField: 'user.email', 
    passwordField: 'user.password', 
    passReqToCallback: true 
    }, 
    function(username,password,done){ 
     console.log("am here"+username+" "+password); 

} 
)) 


app.post('/loginUser',passport.authenticate('local')); 

ON

app.controller('logincontroller',function($scope,$http){ 
    $scope.loginUser=function(){ 
    $http.post('/loginUser',JSON.stringify($scope.user)); 
    } 
    }) 

私が直面する問題は、ローカル戦略はすべて、私が得るすべてで呼び出されISNOTですTyperror:ローカル戦略では、確認コールバックが必要です。私はどこが間違っていたのか分からず、初心者です。助けてください。

答えて

2

あなたが取得しているエラーは、このによって引き起こされる:

var LocalStrategy=require('passport-local').Strategy(); 
                ^^ 

あなたは引数なしStrategyクラスを呼んでいるので、これはエラーになります。あなたはこのように、クラス自体への参照を格納したい:また

var LocalStrategy=require('passport-local').Strategy; 

、あなたがpassReqToCallback : trueを設定しているので、検証コールバックはの引数ではなく、3かかります。これは次のようになります。

function(req, username, password, done) { ... } 
+0

あなたは絶対に正しいです。愚かな間違いで申し訳ありません。私はそれを修正し、今私は型エラーを取得しないが、私は400 - 悪い要求を取得します。理由を教えてください。 – Gayathri

+0

@Gayathriデータを投稿する方法が正しいかどうかは分かりません(おそらく 'JSON.stringify()'と呼ぶのではありませんが、私はAngularに詳しくないので分かりません)。 – robertklep

+0

私はhtmlにname属性を追加しませんでした。なぜなら値が戦略に渡されなかったからです。 – Gayathri

関連する問題