有时候用户没有登录或者在某些情况下你是不希望用户进入页面,但是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‘); } });
时间: 2024-11-09 19:54:39