1. 程式人生 > >三、angularjs 如何在頁面沒有登錄的情況下阻止用戶通過更改url進入頁面--$stateChangeStart

三、angularjs 如何在頁面沒有登錄的情況下阻止用戶通過更改url進入頁面--$stateChangeStart

roots cnblogs ext choose 有時 用戶 log 進入 ice

有時候用戶沒有登錄或者在某些情況下你是不希望用戶進入頁面,但是angular的路由機制可以讓用戶直接通過更改Url進入頁面,如何處理這一問題呢? ——監控路由轉換機制 $stateChangeStart 具體的操作如下:
   //監控路由轉換
        $rootScope.$on(‘$stateChangeStart‘, function(event, toState, toParams, fromState, fromParams) {//上面的參數是固定的
            if(toParams.name === ‘quanCheck‘ && !$sessionStorage.userInfo) {     //
進入O2O卡券驗證頁面 event.preventDefault();//該方法是阻止頁面進入先進行下面的判斷 //驗證token信息是否合法,合法則跳到卡券驗證界面 Service.post(‘users‘, ‘verifyToken‘, { sysId: systemId.o2O, token: toParams.param }).then(function(data) { $sessionStorage.userInfo = angular.extend(data.dataInfo, { currentSystemId: systemId.o2O }); $state.go(
‘o2O‘, { parent: ‘verify‘, name: ‘quanCheck‘, param: null }); }, function(error) { $state.go(‘o2OLogin‘); }); } else if(notCheckLoginStates.indexOf(toState.name) < 0 && !$sessionStorage.userInfo) { //防止用戶不登錄直接進入功能模塊 event.preventDefault(); $state.go(localStorage.defaultLoginState
|| ‘chooseSystem‘); swal(‘請先‘ + (localStorage.defaultLoginState ? ‘登錄!‘ : ‘選擇系統!‘), ‘‘, ‘error‘); } //刪除會話儲存數據 if(deleteStorageStates.indexOf(toState.name) >= 0) { delete $sessionStorage.userInfo; delete $sessionStorage.systemInfo; } //刪除本地預設登錄數據 if(toState.name === ‘chooseSystem‘) { localStorage.removeItem(‘defaultLoginState‘); } });

三、angularjs 如何在頁面沒有登錄的情況下阻止用戶通過更改url進入頁面--$stateChangeStart