2016-04-12 48 views
0

有一点小故事。AngularJS解决承诺。如果承诺被拒绝,则重定向

  • 我有公共页面,并不局限于
  • 我有私人的网页,限制需要登录。
  • 我正在使用Firebase身份验证进行登录。

我有我的$routeProvider我在我的主要.module()我的限制路径.config()如下所示设置。

.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。

简单。