有时候用户没有登录或者在某些情况下你是不希望用户进入页面,但是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的更多相关文章

  1. 仿联想商城laravel实战---3、前端页面搭建(什么情况下需要路由接参数)

    仿联想商城laravel实战---3.前端页面搭建(什么情况下需要路由接参数) 一.总结 一句话总结: 比如访问课程的时候,不同的课程(比如云知梦),比如访问不同的商品,比如访问不同的分类 //商品详 ...

  2. jQuery使用ajaxSubmit()提交表单(在不希望页面跳转的情况下)

    原文:http://www.jb51.net/article/48728.htm ajaxSubmit(obj)方法是jQuery的一个插件jquery.form.js里面的方法,所以使用此方法需要先 ...

  3. javascript 在页面不刷新的情况下 其中的变量时不会被初始化的

    因此可以根据这个原理做出一些效果,例如 <html>    <head>        <meta charset="utf-8" />     ...

  4. Ionic+AngularJS 开发的页面在微信公众号下显示不出来原因查究

    ionic 页面 微信浏览器遇到的坑 公司的微信公众号一部分页面是用AngularJS+Ioinc开发,发现在本地浏览器测试的时候都没问题,传到服务器在微信公众号下跑就出问题来,经查是: index- ...

  5. mvc不登录的情况下无法跳转至其他页面--解决方法之一

    在每个控制器里,加以下方法 /// <summary> /// 在调用视图之前拦截非法用户 /// </summary> /// <param name="fi ...

  6. php在没有登录的情况下自动跳转到登录页

    <?php namespace Home\Controller; use Think\Controller; class BaseController extends Controller{ / ...

  7. 关于页面中css某些情况下出现不知原因的隔断解决办法

    第一种方法:body{margin:0px;padding:0px position:absolute; top:0px;left:0px;} html{ width:100%; overflow-x ...

  8. linux在telnet情况下root登录提示login incorrect

    root登录时总是提示 login incorrect SSH可以登录 别的用户也可以通过telnet登录 唯独root不可以   解决方法: vi /etc/pam.d/login # auth r ...

  9. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十四║ Vuex + JWT 实现授权验证登录

    壹周回顾 哈喽,又是元气满满的一个周一,又与大家见面了,周末就是团圆节了,正好咱们的前后端也要团圆了,为什么这么说呢,因为以后的开发可能就需要前后端一起了,两边也终于会师了,还有几天Vue系列就基本告 ...

随机推荐

  1. centos7安装多媒体播放器SMPlayer

    转自:https://wiki.centos.org/TipsAndTricks/MultimediaOnCentOS7 http://blog.chinaunix.net/xmlrpc.php?r= ...

  2. Mac 10.12原生方法对NTFS分区进行读写的配置

    说明:不一定有效,最简单的方法就是不用NTFS,直接FAT32,对于大文件就用切割. 方法: 1.确定U盘名称 diskutil list ls /Volumes/ 2.比如我找到的U盘名称为Unti ...

  3. Chapter 14. Blocks and Statements

    14.5. Statements There are many kinds of statements in the Java programming language. Most correspon ...

  4. bind(0)

    通配地址就是全0的地址,由内核随机选取

  5. 【c++】字符串流输出恢复状态问题

    缘起 #include <iostream> #include <sstream> using namespace std; int main() { istringstrea ...

  6. Linux文件夹打包发送到本地

    tar -cvf script.tar scriptsz script.tar 具体:  sz/rz命令:  一般来说,linux服务器大多是通过ssh来进行远程的登陆和管理的,如何在命令方式下上传和 ...

  7. Intellij Idea快捷鍵

    一.视图查看 Ctrl+F12 查看file,method结构图.类继承机构图 (不知道方法结构,Ctrl+F12一下,方法,参数,返回值,一清二楚的展现出来) Ctrl+shift+Alt+U   ...

  8. JAVA 方法 和Scanner

    方法:包含于类或对象中,是解决一类问题步骤的有序组合. 算法:解决一类问题的思想. Scanner next()与nextLine()区别 next(): 1.一定要读取到有效字符后才可以结束输入. ...

  9. VFL子视图居中

    今天做UI用VFL适配在View上添加一个图片想让指定宽高的图片居中显示,我用下面的代码想着能实现可是出来的效果并没有居中. UIImageView *headView=[[UIImageView a ...

  10. Delphi下OpenGL2d绘图(04)-画四边形

    一.前言 画四边形基本上与前几遍文字代码是相同.区别在于glBegin()的参数“GL_QUADS”.绘制的框架代码可以使用 Delphi下OpenGL2d绘图(01)-初始化 中的代码.修改的部份为 ...