AngularJS决心承诺。如果承诺被拒绝,则重定向

时间:2016-04-12 23:03:34

标签: javascript angularjs firebase-authentication

一个小故事。

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

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

.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。如果承诺被拒绝,则在重新定位中放置重定向。

基本上,如果用户未登录,我希望将其发送回主页。现在浏览器只显示一个空白页面。

1 个答案:

答案 0 :(得分:0)

经过一些更多的研究(我意识到现在我需要挖掘更多,抱歉不会再次发生。)

我通过向我的应用程序添加.run()找到了解决方案。

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

当我收到AUTH_REQUIRED错误时,这会抓取我的routeChangeError并重定向。

简单。