2016-04-12 8 views
0

Biraz arka hikaye.AngularJS Sözü Çöz. Söz reddedilirse yönlendirin

  • Ben
  • Ben giriş yapılmasını gerektiren özel sayfalar, kısıtlı olması kısıtlı kamu sayfaları var.
  • Giriş için Firebase Kimlik Doğrulaması kullanıyorum.

Ben benim $routeProvider benim ana .module() My kısıtlı yolları .config() aşağıdaki gibi görünür benim kurulmuş.

.when('/admin', { 
      controller: 'adminCtrl as admin', 
      templateUrl: 'pages/admin/dashboard.tpl.html', 
      resolve: { 
       "currentAuth": ["$firebaseAuth", function($firebaseAuth) { 
        //$requireAuth returns a promise if authenticated, rejects if not 
        var ref = new Firebase(fbUrl); 
        var authObj = $firebaseAuth(ref); 

        return authObj.$requireAuth(); 
       }] 
      } 
     }) 

Sorum özellikle kararlılığı hakkında benim tarayıcısında templateUrl göremiyorum çünkü düzgün çalıştığını varsayıyorum. (Bunun bir gerçeği biliyorum, dönüşü kaldırdım ve return true'u yerleştirdim ve şablonum göründüm)

Şu anda çözümdeki bu vaat reddediliyor. Giriş yapan bir kullanıcı olmadığım için.

Benim sorum şu ki, nasıl yaparım? $routeProvider'u .otherwise yoluma veya b'ye yollayın. söz reddedilirse çözüme bir yönlendirme yerleştirin.

Temel olarak, Kullanıcı oturum açmadıysa, giriş sayfasına geri gönderilmesini istiyorum. Şu anda tarayıcı sadece boş bir sayfa gösteriyor.

cevap

0

sonra biraz daha araştırma (şimdi fark Özür daha olmayacak. Daha kazmak için gerekli)

benim uygulamaya .run() ekleyerek bir çözüm bulduk.

.run(function($rootScope, $location) { 
    $rootScope.$on("$routeChangeError", function(event, current, previous, eventObj) { 
     console.log(eventObj); 
     if (eventObj === 'AUTH_REQUIRED') { 
      $location.path("/"); 
     } 
    }); 
}) 

Bu benim routeChangeError kapar ve ben AUTH_REQUIRED hatalarını varken yönlendirir.

Basit.

İlgili konular