2016-10-03 5 views
1

Firebase V3, AngularJS 및 ui.router를 사용하여 내 사이트의 다양한 경로를 보호하고 싶습니다.Firebase v3에서 각도 경로를 확보하는 방법은 무엇입니까?

This 비슷한 문제입니다. 나는 그 자리에서 계단을 따라 갔지만 나를 위해 일하지 않았다. 나는 일이 기대

:. 을 로그 아웃하고 로그인 할 때 FAQ 페이지를 표시해야하는지 여부 나는 로그인 페이지로 전달해야 FAQ 링크를 클릭하면 실제로 어떻게됩니까

: FAQ 페이지에 전혀 액세스 할 수 없습니다. 로그인해도 별 효과가 없습니다. 또한 로그 아웃 할 때 로그인 페이지로 전달하지 않습니다.

run 기능에서이 오류가 발생합니다. 나는 내가 종속성 배열에서 중포 기지를 제거 할 경우에도 모듈 인젝터 오류가 발생하지 않으면

ReferenceError: Firebase is not defined(…)  

가 나는 페이지에 AngularFire를 포함 시켰습니다.

var app = angular.module('app', ['ui.router', 'firebase']); 
app.constant('FirebaseDatabaseUrl', 'https://myfbdb.firebaseio.com'); 
app.config(function($stateProvider, $urlRouterProvider, $firebaseRefProvider, FirebaseDatabaseUrl) { 
    $firebaseRefProvider.registerUrl(FirebaseDatabaseUrl); 
// If a route other than status is requested, 
// go to the auth route 
//$urlRouterProvider.otherwise('/logintest/login'); 

$stateProvider 
    .state('login', { 
     url: '/login', 
     templateUrl: 'pages/login.html', 
     controller: 'LoginController as login' 
    }) 

    .state('faq', { 
     url: '/faq', 
     templateUrl: 'pages/faq.html', 
     controller: 'FaqController as faq', 
     resolve: { 
      // controller will not be loaded until $requireSignIn resolves 
      "firebaseUser": ["$firebaseAuthService", function($firebaseAuthService) { 
      console.log('waitForSignIn') 
        // $waitForSignIn returns a promise so the resolve waits for it to complete 
        return $firebaseAuthService.$waitForSignIn(); 
      }] 
      } 

    }) 
    .state('about', { 
     url: '/about', 
     templateUrl: 'pages/about.html', 
     controller: 'AboutController as about', 
     resolve: { 
      // controller will not be loaded until $requireSignIn resolves 
      "firebaseUser": ["$firebaseAuthService", function($firebaseAuthService) { 
      // If the promise is rejected, it will throw a $stateChangeError 
      return $firebaseAuthService.$requireSignIn(); 
      }] 
     }   
    }) 

}); 



app.controller('FaqController', ['$scope', 'firebaseUser', function($scope, firebaseUser){ 
console.log('faq') 
}]); 





app.run(["$rootScope", "$state", function($rootScope, $state) { 
    console.log('run'); 
    $rootScope.$on("$stateChangeError", function(event, toState, toParams, fromState, fromParams, error) { 
// We can catch the error thrown when the $requireSignIn promise is rejected 
// and redirect the user back to the home page 
if (error === "AUTH_REQUIRED") { 
    console.log('redirecting to login page') 
    $state.go("login"); 
} 
}); 
    }]); 
+0

이전 버전의 AngulsrFire를 사용하고있는 것 같습니다. 버전 번호는 무엇입니까? –

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 나는 v1.2.0을 사용하고있다. – user1532669

+0

그게 문제가 될 것입니다. 2.0 이상으로 업그레이드 –

답변

2

AngularFire 버전 2.0 이상은 Firebase 3.0과 호환됩니다. AngularFire 2.0 이하는 Firebase의 레거시 버전 용입니다.

관련 문제