2017-03-07 1 views
0

私は現在、Firebaseロギングシステムを使用してAngularJSで作成されたアプリケーションに取り組んでいます。私はログインしようとすると奇妙なリダイレクトを持っています - ロギングが成功したかどうかにかかわらず何らかの理由で登録ページにリダイレクトされます。警報が表示された場合は、登録ページに表示されます。 登録するルートを削除しようとしました。運がよかったです。 OnAuthStateChangedがトリガされたときに発生したアクションを削除しようとしましたが、まだリダイレクトされています。アプリをデバッグしようとした - 私は見当がつかない機能ラインでangular.jsでAngularJSの奇妙なリダイレクト

for (var i = 0; i < eventFnsLength; i++) { 
    if (!event.isImmediatePropagationStopped()) { 
    handlerWrapper(element, event, eventFns[i]); 
    } 
} 

3532の原因はどのようにそれを停止にするようです。

SignInCtrl.js

angular.module('szybkiePisanie') 
.controller('SignInCtrl', ["$scope", "$firebaseAuth", function ($scope, $firebaseAuth) { 
    $scope.SignIn = function (event) { 
     if ($scope.user.email != undefined) var email = $scope.user.email; else { alert("Wpisz adres e-mail"); return; } 
     if ($scope.user.password != undefined) var password = $scope.user.password; else { alert("Wpisz hasło"); return; } 
     firebase.auth().signInWithEmailAndPassword(email, password).catch(function (error) {     
      var errorCode = error.code; 
      var errorMessage = error.message; 

      if (email.length < 4) { 
       alert('Proszę wpisać adres email.'); 
       return; 
      } 
      if (password.length < 4) { 
       alert('Proszę wpisać hasło.'); 
       return; 
      } 
      ; 
      if (errorCode === 'auth/wrong-password') { 
       alert('Błędne hasło.'); 
      } 
      else if (errorCode === 'auth/invalid-email') { 
       alert('Nieprawidłowy adres email'); 
      } 
      else if (errorCode === 'auth/user-disabled') { 
       alert('Użytkownik zablokowany'); 
      } 
      else if (errorCode) { 
       alert(errorMessage); 
      } 
     }) 
    } 
}]); 

RegisterCtrl.js

angular.module('szybkiePisanie') 
.controller('RegisterCtrl', ["$scope", "$firebaseAuth", function ($scope, $firebaseAuth) { 
    $scope.Register = function (event) { 
     if ($scope.user.email != undefined) var email = $scope.user.email; else { alert("Wpisz mejl"); return; } 
     if ($scope.user.password != undefined) var password = $scope.user.password; else { alert("Wpisz haslo"); return; } 
     firebase.auth().createUserWithEmailAndPassword(email, password).catch(function (error) { 
      var errorCode = error.code; 
      var errorMessage = error.message; 

      if (email.length < 4) { 
       alert('Please enter an email address.'); 
       return; 
      } 
      if (password.length < 4) { 
       alert('Please enter a password.'); 
       return; 
      } 
     }) 
    } 
}]); 

script.js(ルーティング)

angular.module('szybkiePisanie', ['ngRoute', 'firebase']) 
.config(['$routeProvider', 
    function ($routeProvider) { 
     $routeProvider 
      .when('/home', { 
       templateUrl: 'Home/home.html', 
       controller: 'HomeCtrl' 
      }) 

      .when('/practice', { 
       templateUrl: 'Practice/practice.html', 
       controller: 'PracticeCtrl' 
      }) 

      .when('/signin', { 
       templateUrl: 'SignIn/signin.html', 
       controller: 'SignInCtrl' 
      }) 

      .when('/profile', { 
       templateUrl: 'Profile/profile.html', 
       controller: 'ProfileCtrl' 
      }) 

      .when('/register', { 
       templateUrl: 'Register/register.html', 
       controller: 'RegisterCtrl' 
      }) 

      .otherwise({ 
       redirectTo: '/home' 
      }) 
    }]); 

編集:。 リダイレクトのみで歌っによって引き起こされませんで実際にはボタンやドロップダウンによって私のアプリは '/ singin'から '/ register'にリダイレクトされます。奇妙な。

+0

これを再現できるフィドルを提供できますか? –

+0

https://plnkr.co/edit/6E8u51cQRboz6yrJv9EU?p=preview –

+0

リダイレクトを再現できません。私は有効な電子メールパスがないので、私はどのパスワードテキストでも有効な電子メールを試しました。認証に失敗したため、400エラーが発生するリクエストは1つしかありません。しかし、私はリダイレクトを見ません –

答えて

1

私はリダイレクトの原因を突き止めました。私は私のサイトで 'a'タグを終了していないし、残りのサイトはリンクとして機能していた。

0

可能なルートは、/signin/registerの2つです。したがって、ルータはこれらのルートのうちの1つだけをサポートし、それらのルートの1つにリダイレクトされることになります。問題は、デフォルトルートのようなログイン状態のルートを定義していない可能性があります。私が知っている限り、角度ルータを使用するときは、サポートしたいすべてのルートを定義する必要があります。

angular.module('szybkiePisanie', ['ngRoute', 'firebase']) 
    .config(['$routeProvider', 
     function ($routeProvider) { 
      $routeProvider 
       .when('/signin', { 
        templateUrl: 'SignIn/signin.html', 
        controller: 'SignInCtrl' 
       }) 

       .when('/register', { 
        templateUrl: 'Register/register.html', 
        controller: 'RegisterCtrl' 
       }) 

       .when('/', { 
        templateUrl: 'Home/home.html', 
        controller: 'HomeCtrl' 
       }) 

       .otherwise({ 
        redirectTo: '/' 
       }); 
     }]); 
+0

私は実際に私のコードでそれを持っています - 私はちょうどここに明確にするためにそれを含めなかった。私はそれを編集します。 –