angular 未登录状态拦截路由跳转的方法


Posted in Javascript onOctober 09, 2018

使用angularjs的但页面应用时,由于是本地路由在控制页面跳转,但是有的时候我们需要判断用户是否登录来判断用户是否能进入界面。

angularjs是mvc架构所以实现起来很容易也很灵活,我们只MainController里增加一个路由事件侦听并判断,这样就可以避免未登录用户直接输入路由地址来跳转到登录界面地址了。

第一步:定义myapp

var myapp=angular.module("MainController",["ui.router",'infinite-scroll','oc.lazyLoad']);

第二步:使用config来配置路由跳转

myapp.config(
 function($stateProvider,$urlRouterProvider,$ocLazyLoadProvider,$httpProvider){
 $stateProvider
  .state('index', {//首页
   url: '/index',
   templateUrl: basePath+'page/gym/lecycle_index.html',
   resolve: {
     loadMyCtrl: ['$ocLazyLoad', function($ocLazyLoad){//这两行就是loader的使用,此行写法固定
      return $ocLazyLoad.load(basePath+'src/lecycle_index/le_index.js');//后面这个就是进入这个模板时候要加载进来的js
     }]
    }
  })
  .state('userAgree',{//同意用户协议页面
   url:"/userAgree",
   templateUrl:basePath+'page/agreement.html'
  })
  .......
 $urlRouterProvider.otherwise("/index");/*BproDtails*/
});

第三步:使用run来进行登录验证拦截

myapp.run(function ($rootScope,$state) {
 $rootScope.$on('$stateChangeStart',function(event){
  // if(toState.name=='login')return;// 如果是进入登录界面则允许
  // 如果用户不存在
  if(ifLoginTrue==false){
   console.log("没有登录")
   event.preventDefault();// 取消默认跳转行为
   $("#my-modal-loading").modal('open');//开启加载中loading

   // $state.go("login",{from:fromState.name,w:'notLogin'});//跳转到登录界面
  }
 });
});

以上这篇angular 未登录状态拦截路由跳转的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
网页开发中的容易忽略的问题 javascript HTML中的table
Apr 15 Javascript
jQuery trigger()方法用法介绍
Jan 13 Javascript
jQuery表单美化插件jqTransform使用详解
Apr 12 Javascript
JavaScript中window.open用法实例详解
Apr 15 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
Apr 22 Javascript
JavaScript中数组添加值和访问值常见问题
Feb 06 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
Feb 18 Javascript
jQuery实现百度登录框的动态切换效果
Apr 21 jQuery
基于Swiper实现移动端页面图片轮播效果
Dec 28 Javascript
解决jQuery使用append添加的元素事件无效的问题
Aug 30 jQuery
深入解析koa之异步回调处理
Jun 17 Javascript
解决axios post 后端无法接收数据的问题
Oct 29 Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
Oct 09 #Javascript
angularJS1 url中携带参数的获取方法
Oct 09 #Javascript
AngularJS $http post 传递参数数据的方法
Oct 09 #Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
Oct 09 #Javascript
angularJS自定义directive之带参方法传递详解
Oct 09 #Javascript
Vue中的作用域CSS和CSS模块的区别
Oct 09 #Javascript
利用JS动态生成隔行换色HTML表格的两种方法
Oct 09 #Javascript
You might like
PHP 存取 MySQL 数据库的一个例子
2006/10/09 PHP
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
php文件上传简单实现方法
2015/01/24 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
JavaScript原生对象之Date对象的属性和方法详解
2015/03/13 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
微信小程序加载更多 点击查看更多
2016/11/29 Javascript
js实现PC端根据IP定位当前城市地理位置
2017/02/22 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
2017/03/23 jQuery
详解Nuxt.js Vue服务端渲染摸索
2018/02/08 Javascript
JS实现520 表白简单代码
2018/05/21 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
Vue router安装及使用方法解析
2020/12/02 Vue.js
python解决字典中的值是列表问题的方法
2013/03/04 Python
python爬取网站数据保存使用的方法
2013/11/20 Python
python-opencv颜色提取分割方法
2018/12/08 Python
django实现模板中的字符串文字和自动转义
2020/03/31 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
2020/06/22 Python
Python如何进行时间处理
2020/08/06 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
2020/12/04 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
Etam德国:内衣精品店
2019/08/25 全球购物
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
十八届三中全会宣传方案
2014/02/21 职场文书
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书
2014年机关作风建设工作总结
2014/10/23 职场文书
幼儿园感恩节活动总结
2015/03/24 职场文书
JS中一些高效的魔法运算符总结
2021/05/06 Javascript
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python