我的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 示例中存在问题。干杯