2016-09-26 14 views
0

ユーザーログインのためのノードapiを作成しており、認証にJSON Webトークンを使用しています。ユーザーはJWTとノードAPIを使用してAngular jsでログインできません

apiRoutes.put('/login', function(req, res){ 
    User.findOne({name:req.body.name}, function(err, user){ 
    if(err){throw err;} 
    else{ 
     if(!user){ 
     res.send({success:false, msg:'Auth Failed'}); 
     }else{ 
     user.comparePassword(req.body.password, function(err, isMatch){ 
      if(isMatch && !err){ 
      var token=jwt.encode(user, config.secret); 
      res.json({success:true, token:'JWT' +token}); 
      }else{ 
      res.send({success:false, msg:'Auth Fails:wrong password'}); 
      } 
     }); 
     } 
    } 
    }); 
}); 

ログインコントローラ

app.controller('loginCtrl', function($http, $scope, $location, $cookieStore){ 

$scope.login=function(){ 
    console.log($scope.loginUser); 
    $http.put('/api/login', $scope.loginUser).then(function(response){ 

     console.log(response.data.token); 
     $cookieStore.put('token',response.data.token); 
     $scope.currentUser=$scope.loginUser.name; 
     alert("Successfully Loggedin"); 

     }, function(err){ 
     alert('Bad Login Credentials'); 
     }); 

     }; 
    }); 

ログインフォームのHTML

<div class="post" ng-controller="loginCtrl"> 
     <form method="post"> 
      <div class="form-group" > 
      <label>Name</label> 
      <input type="text" class="form-control" name="name" ng-model="loginUser.name" /> 
     </div> 
     <div class="form-group"> 
      <label>Password</label> 
      <input type="password" class="form-control" name="password" ng-model="loginUser.password"/> 
     </div> 
     <div class="form-group"> 
      <button class="btn btn-success" ng-click="login()" >Login</button> 
     </div> 
     </form> 

     </div> 

問題は、私は、ユーザーの資格情報を使用してログインボタンをクリックしたときに、それは常にある、ということですユーザーの資格情報が正しいか間違っていても、alert("successfully logged in");を返します。私はAngular Loginのコントローラに何かがないと思うが、私はエラーを見つけることができない。

問題を見つけるのに手伝ってくれる人がいますか?

ありがとうございました。

答えて

2

エラー応答を送信するときに、応答としてhttpステータスコードを送信してみます。試してみてください。

res.send(400, {success:false, msg:'Auth Failed'}); 
+2

速達4用res.status(400).send({success:false、msg: 'Auth Failed'}); – Gatsbill

+0

いいえ..その動作していない...まだ同じ問題に直面しています。 –

+0

ユーザ 'name'と' password'が両方とも間違っている場合は、正しい警告メッセージを表示します。しかし、 'user'と' password'がマッチしなかった場合、常に 'alert(" successfully loggedin ")を返します。 –

関連する問題