我的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;
})
问题是:当我没有登录时,我仍然可以访问该页面。
有谁知道如何解决这个问题?
此致 JUR
EDIT / UPDATE
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();
}]
}
})
现在有效。但是当我没有登录时,不会重定向到主页。如何?
答案 0 :(得分:1)
错字:
resolved: {
"currentAuth": ["Auth", function(Auth){
return Auth.$requireAuth();
}]
}
应该解决
resolve: {
"currentAuth": ["Auth", function(Auth){
return Auth.$requireAuth();
}]
}
resolve包含一个或多个依赖项,必须在路由更改之前成功解析,这很可能会阻止解析器强制解析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
})
}]
}
答案 1 :(得分:1)
stateService.ts:525 Transition Rejection
我通过使用旧版Angular Ui路由器解决了这个问题。
bower install angular-ui-router#0.3.1
最新的Ui路由器在Angularfire Auth示例中存在问题。 干杯