解析firebase.com/Parse.com应用程序的$ routeChangeError

时间:2016-01-09 06:11:56

标签: angularjs parse-platform firebase firebase-authentication

我正在做的是使用AngularJS,Parse.com和$ routeChangeError中的ngRoute的简单登录和身份验证系统。

$rootScope.$on('$routeChangeError', function(event, next, previous, error) {
 // We can catch the error thrown when the $requireAuth promise is rejected
 // and redirect the user back to the home page
 if (error === "AUTH_REQUIRED") {
      $location.path('/');
  }
});

我遵循与应用程序的“等待和消耗”Firebase示例(https://github.com/gordonmzhu/angular-course-demo-app-v2/blob/master/src/app/app.module.js)相同的架构。

在firebase中有一个承诺,验证用户是否经过身份验证,并在拒绝承诺时返回错误字符串“AUTH_REQUIRED”,然后$ routeChangeError启动,我的页面无法访问(整洁! !),但是!!! ...我想对Parse.com JS SDK做同样的事情。目前我使用Parse.User.current()进行登录和注册,所以我想继续使用Parse.com

我的直接问题是:Parse.com中的类似于firebase.com $ requireAuth()的承诺吗?

我尝试了Parse.User.currentAsync(),但没有触发$ routeChangeError :(

这里有一些关于firebase.com $ requireAuth()的文档: https://www.firebase.com/docs/web/libraries/angular/guide/user-auth.html#section-routers

这是我的Auth服务工厂:

(function() {
  'use strict';

  angular
    .module('app.waitList')
    .config(configFunction);

  configFunction.$inject = ['$routeProvider'];

  function configFunction($routeProvider) {
    $routeProvider.when('/waitlist', {
      templateUrl: 'app/waitList/waitList.html',
      controller: 'WaitListController',
      controllerAs: 'vm',
      resolve: {user: resolveUser}
    });
  }

  resolveUser.$inject = ['authService'];

  function resolveUser(authService) {
    // return Parse.com - Parse.User.PROMISE?????? 
    return authService.firebaseAuthObject.$requireAuth();

  }

})();

应用模块:

(function() {
  'use strict';

  angular
    .module('app', [
      // Angular modules.
      'ngRoute',

      // Third party modules.
      'firebase',

      // Custom modules.
      ...
    ])
    .config(configFunction)
    .run(runFunction);

  configFunction.$inject = ['$routeProvider'];

  function configFunction($routeProvider) {
    $routeProvider.otherwise({
      redirectTo: '/'
    });
  }

  runFunction.$inject = ['$rootScope', '$location'];

  function runFunction($rootScope, $location) {
    $rootScope.$on('$routeChangeError', function(event, next, previous, error) {
      // We can catch the error thrown when the $requireAuth promise is rejected
      // and redirect the user back to the home page
      if (error === "AUTH_REQUIRED") {
        $location.path('/');
      }
    });
  }

})();

1 个答案:

答案 0 :(得分:1)

您可以使用omp_set_num_threads()创建承诺,使用$q.when

拒绝承诺
$q.reject