私はngrouteから移行しており、認証チェックを提供するルートに抽象状態を追加しようとしています。ユーザーが認証されていない場合は、認証された場合は/login
にリダイレクトして、続行します。UIルーター抽象状態無限ループ
重要な点の1つは、ユーザーが/login
にアクセスしようとすると、認証されたときに/
にリダイレクトされる点です。
ユーザが認証されておらず、抽象的な親状態がトリガーされて、それらが認証されているかどうかを確認し、ログインにリダイレクトするなど、無限ループで/login
にリダイレクトされる問題があります。
angular.module('qaApp').factory('authorization', ['$rootScope', '$state', '$stateParams', 'userService',
function($rootScope, $state, $stateParams, userService){
return {
authorize: function(){
return userService.identity().then(
function(){
let isAuthenticated = userService.isAuthenticated;
if(!isAuthenticated){
$state.is('login'); //Always false
$state.includes('login'); //Always false
//Somehow check to ensure next route is not /login
$state.go('login');
}
//Else if next route is /login redirect to /home...etc
}
)
}
}
}]);
angular.module('qaApp').config(function($stateProvider, $urlRouterProvider){
$urlRouterProvider.otherwise('/login');
$stateProvider.state('app', {
abstract: true,
resolve: {
authorize: ['authorization', function(authorization){
return authorization.authorize();
}]
}
})
.state('login', {
parent: 'app',
url: '/login',
templateUrl: 'app/login/login.html',
controller: 'loginController',
controllerAs: 'login'
})
})
は、どのように私は次のルートが/login
でない場合$state.go('login')
にのみ発生することを確認することができますか?