【问题标题】:AngularJS Resolve Promise. Redirect if promise is rejectedAngularJS 解决承诺。如果 promise 被拒绝,则重定向
【发布时间】:2016-08-03 19:06:48
【问题描述】:

一个小故事。

  • 我有公共页面,不受限制
  • 我有私人页面,需要登录。
  • 我正在使用 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并放置了return true,然后我的templateUrl就出现了)

所以现在,resolve 中的这个承诺被拒绝了。因为我不是登录用户。

我的问题是,我该怎么做。将$routeProvider 发送到我的.otherwise 路线或b。如果 promise 被拒绝,则在 resolve 中放置一个重定向。

基本上,如果用户没有登录,我希望他们返回主页。现在浏览器只是显示一个空白页面。

【问题讨论】:

    标签: javascript angularjs firebase-authentication


    【解决方案1】:

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

    我通过将.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 并重定向。

    简单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-17
      • 2023-03-26
      • 1970-01-01
      • 2013-06-22
      • 1970-01-01
      • 2021-11-02
      • 2013-09-16
      • 1970-01-01
      相关资源
      最近更新 更多