角度路由登录 $requireAuth()



我的Auth.$requiredAuth()有问题

.config(function($stateProvider, $urlRouterProvider){
 $stateProvider.state('cursustext', {
  url: '/cursustext',
  templateUrl: 'views/cursustext/cursustext.html',
  controller: 'cursustextCtrl',
  resolved: {
   "currentAuth": ["Auth", function(Auth){
     return Auth.$requireAuth();
   }]
  }
 })
})

-

.factory('Auth', function($firebaseAuth){
 var auth = $firebaseAuth();
 return auth;
})

问题是:当我没有登录时,我仍然可以转到该页面。

有谁知道如何解决这个问题?

真诚地尤尔

编辑/更新

angular.module('myApp.cursustext', ['ui.router'])
.run(["$rootScope", "$state", function($rootScope, $state) {
  $rootScope.$on("$stateChangeError", function(event, toState, toParams, fromState, fromParams, error) {
    if (error === "AUTH_REQUIRED") {
      $state.go('home');
    }
  });
}])
.config(function($stateProvider, $urlRouterProvider){
  $stateProvider.state('cursustext', {
    url: '/cursustext',
    templateUrl: 'views/cursustext/cursustext.html',
    controller: 'cursustextCtrl',
    resolve: {
      "currentAuth": ["Auth", function(Auth) {
        return Auth.$requireSignIn();
      }]
    }
  })

它现在有效。但是当我没有登录时,不会重定向到主页。如何?

这里的拼写错误:

resolved: {
   "currentAuth": ["Auth", function(Auth){
     return Auth.$requireAuth();
   }]
}

应该解决

resolve: { 
   "currentAuth": ["Auth", function(Auth){
     return Auth.$requireAuth();
   }]
}
解析

包含一个或多个依赖项,这些依赖项必须在路由更改之前成功解析,这很可能会阻止解析器强制解析 Auth 依赖项,这就是为什么您可以在不记录的情况下查看状态的原因。

编辑:要处理错误的情况,您可以这样做:

resolve: { 
   "currentAuth": ["Auth", function(Auth){
      return Auth.$requireAuth().then(function(resp){
        return resp;
      })
      .catch(function(err){
        $location.path('/home'); //redirect to home page in case of error
      })
    }]
}
嘿,

希望您解决了这个问题,无论如何我遇到了同样的问题

stateService.ts:525 Transition Rejection

我通过使用旧版本的Angular Ui Router解决了这个问题。

bower install angular-ui-router#0.3.1

最新的 Ui 路由器在 Angularfire Auth 示例中存在问题。干杯

最新更新