2016-04-12 16 views
0

ちょっとした物語。AngularJS Promiseを解決します。約束が拒否された場合はリダイレクト

  • 私がログインを必要と制限付きのプライベートページを持っている
  • を制限されていない、公共のページを持っています。
  • ログインにFirebase認証を使用しています。私は私のメイン.module()マイ制限されたパスの私の.config()$routeProviderを設定している

は、以下のように見えます。

.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(); 
       }] 
      } 
     }) 

私の質問は、特に解決についてです私は自分のブラウザ上templateUrlを見ておりませんので、それが正しく機能していると仮定しています。 (私は事実を知っていますが、私は返品を取り除き、return trueと私のtemplateUrlが登場しました)

今、この約束は却下されています。私はログインしているユーザーではないので

私の質問は、どうすればいいですか? $routeProviderを自分の.otherwiseルートに送信するか、b。約束が拒否された場合、解決にリダイレクトを配置します。

基本的に、ユーザーがログインしていない場合は、ホームページに返信してください。今、ブラウザは空白のページを表示しています。

答えて

0

いくつかのより多くの研究(私は申し訳ありません二度と起こらないだろう、今私はもっと掘るために必要と認識しています。)

後、私は自分のアプリケーションに.run()を追加することで解決策を発見しました。

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

これは私のrouteChangeErrorをつかみ、私はAUTH_REQUIREDのエラーを持っているときにリダイレクトします。

シンプルです。

関連する問題