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 相关文章推荐
js可突破windows弹退效果代码
Aug 09 Javascript
JavaScript 继承详解(三)
Jul 13 Javascript
JavaScript 大数据相加的问题
Aug 03 Javascript
javascript函数作用域学习示例(js作用域)
Jan 13 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
Aug 01 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
Oct 11 Javascript
AngularJS中isolate scope的用法分析
Nov 22 Javascript
Angular路由简单学习
Dec 26 Javascript
node.js基于mongodb的搜索分页示例
Jan 22 Javascript
使用electron制作满屏心特效的示例代码
Nov 27 Javascript
vue + element-ui的分页问题实现
Dec 17 Javascript
cypress测试本地web应用
Jun 01 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 数组的创建、调用和更新实现代码
2009/03/09 PHP
php异常处理使用示例
2014/02/25 PHP
php使用文本统计访问量的方法
2016/05/12 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
JS 文件大小判断的实现代码
2010/04/07 Javascript
js和jquery批量绑定事件传参数一(新猪猪原创)
2010/06/23 Javascript
js类型检查实现代码
2010/10/29 Javascript
javascript学习笔记(五)正则表达式
2011/04/08 Javascript
node.js实现多图片上传实例
2014/06/03 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
JS实现隔行换色的表格排序
2017/03/27 Javascript
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
2018/01/25 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
Python装饰器的函数式编程详解
2015/02/27 Python
python实现计数排序与桶排序实例代码
2019/03/28 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
python中的unittest框架实例详解
2021/02/05 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
动员大会主持词
2014/03/20 职场文书
国窖1573广告词
2014/03/21 职场文书
大班开学家长寄语
2014/04/04 职场文书
小学生春游活动方案
2014/08/20 职场文书
Kubernetes控制节点的部署
2022/04/01 Servers
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL