2017-03-07 77 views
0

我目前正在使用Firebase日誌系統使用AngularJS製作的應用程序。當我嘗試登錄時,我有一個奇怪的重定向 - 無論記錄是否成功,它都會因爲某種原因重定向到註冊頁面。如果警報顯示出來,則顯示在註冊頁面上。 試圖刪除註冊頁面的路線 - 沒有運氣。嘗試刪除OnAuthStateChanged觸發時發生的操作 - 仍然重定向。試圖調試應用程序 - 它似乎功能AngularJS中的奇怪重定向

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

在angular.js符合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

所以我想出了什麼導致重定向。我還沒有在我的網站上結束'a'標記,並且網站的其餘部分充當了鏈接。

0

您只指定了兩條可能的路線:/signin/register。因此,路由器將只支持這些路由之一,並且最終將被重定向到其中一個路由。問題可能是你沒有爲登錄狀態定義路由,這應該是默認路由。據我所知,當使用角度路由器時,您需要定義您想要支持的每條路線。

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

我實際上在我的代碼中有這個 - 我只是沒有在這裏包括它以清晰。我會編輯它。 –