四、angularjs 如何在页面没有登录的情况下阻止用户通过更改url进入页面--$stateChangeStart...

有时候用户没有登录或者在某些情况下你是不希望用户进入页面,但是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');   
            }
        });

 

转载于:https://www.cnblogs.com/gunelark/p/7290513.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值