2016-09-14 20 views
0

私はこの問題の解決策を見つけましたが、正しく実装していないか、解決策ではありません。問題は、私は2回ログインする必要があるということです。 私は$scope.$apply()を使ってみましたが、私が正しく使用しているかどうかはわかりませんでした。 私のログインコントローラ:2回ログインする必要があります:角度js

app.controller('loginctrl',['$rootScope','$scope','$http','$state','$cookies',function($scope,$rootScope,$http,$state,$cookies){ 
var cookietoken= $cookies.get('Token'); 

if(cookietoken) 
{ 
    alert('You are already logged in!'); 
    $state.go('home'); 
} 
else 
{ 
    $scope.user={ 
     username:"", 
     password:"", 
     rememberme:"" 
    }; 
    $scope.showerror=false; 

    $scope.login = function(){ 
     $http({ 
      method:"POST", 
      url:$rootScope.apiend+'login', 
      data:$scope.user 
     }) 
     .success(function(result){ 
      console.log(result); 

     }).error(function(){ 
      alert('something looks wrong.'); 
     }); 
    }; 
} 

]]);

EDIT: は、ページが最初に初めて誤差法に入ると私は推測している二度目

+0

動作しませんか?ブラウザのJavaScriptコンソールにエラーメッセージがありますか? –

+0

エラーメッセージが表示されず、このページにログインしたい場合は、1つの理由を除いて完璧に機能します:初めてログインしてログに記録した後にページがリロードされる ' – uttejh

+0

WebページにCSRFがありますか?サーバー側で?フォームの詳細情報を追加して、ログインページとそのサーバー構成を送信していますか? –

答えて

0

のための成功の方法を示したが、私はlogin関数が呼び出されたときと仮定され、それは正常に "サーバー上の部分"にログインしますが、クライアント上のsuccessメソッドはコンソールに結果を書き込む以上のことは何もしません。また、2回目に試してみると、あなたはすでにログされていることを確認します(cookietokenをチェック) 「ホーム」ページに移動します。

その場合はログインがsuccess方法では、成功した後は、その後、あなただけの行$state.go('home');を追加する必要があります。まさにあなたがこのコードとどのようにそれをして達成したい何

app.controller('loginctrl',['$rootScope','$scope','$http','$state','$cookies',function($scope,$rootScope,$http,$state,$cookies){ 
var cookietoken= $cookies.get('Token'); 

if(cookietoken) 
{ 
    alert('You are already logged in!'); 
    $state.go('home'); 
} 
else 
{ 
    $scope.user={ 
     username:"", 
     password:"", 
     rememberme:"" 
    }; 
    $scope.showerror=false; 

    $scope.login = function(){ 
     $http({ 
      method:"POST", 
      url:$rootScope.apiend+'login', 
      data:$scope.user 
     }) 
     .success(function(result){ 
      console.log(result); 
      $state.go('home');    /* <-- add this line here */ 

     }); 
    }; 
} 
}]); 
+0

nope!これは起こっていることではありません。私はやった。努力をいただきありがとうございます! – uttejh

+0

結果はjavascriptコンソールに表示されますか?または少なくともサーバーに送信されたajaxリクエスト?最初のログイン試行から設定されたトークンCookieですか? –

+0

コンソールは初めて空のままであり、結果は2回目に印刷され、最初の試行にはクッキーが設定されていません。自分のコードを少し修正しました。はい! ajaxリクエストがサーバーに送信されています – uttejh

関連する問題