我正在使用AngularJS ui-router。我正在嘗試爲未經身份驗證的用戶實施保護路由。我正在檢查用戶是否登錄在$stateChangeStart
。如果用戶未登錄,則重定向到登錄狀態。
但是,當我在stateChangeStart
處理程序使用$state.go("login")
,處理程序代碼放在無限循環和獲得控制檯錯誤「的RangeError:最大調用堆棧大小超出」
下面是我的代碼:
$rootScope.$on('$stateChangeStart',
function(event, toState, toParams, fromState, fromParams) {
var allowedStates = ["signup","confirmaccount","resetPassword"];
if(!$window.localStorage.getItem('userInfo') && !(allowedStates.includes($state.current.name)))
{
$state.go("login");
}
}
);
以下是控制檯錯誤的截圖。
謝謝您的回答。我曾嘗試過使用解決方案。但在這種情況下,我必須解決每個狀態的身份驗證功能。我不需要那個。我想使用狀態事件處理程序從一個地方檢查它。 –