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 相关文章推荐
一直复略了的一个问题,关于表单重复提交
Feb 15 Javascript
JavaScript中的Location地址对象
Jan 16 Javascript
js显示时间 js显示最后修改时间
Jan 02 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
Oct 16 Javascript
详解Vue使用 vue-cli 搭建项目
Apr 20 Javascript
layui表格实现代码
May 20 Javascript
Node.js中sequelize时区的配置方法
Dec 10 Javascript
Angular 5.x 学习笔记之Router(路由)应用
Apr 08 Javascript
axios对请求各种异常情况处理的封装方法
Sep 25 Javascript
详解如何使用koa实现socket.io官网的例子
Nov 04 Javascript
微信小程序实现保存图片到相册功能
Nov 30 Javascript
Layui tree 下拉菜单树的实例代码
Sep 21 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笔记 字符串处理
2010/10/19 PHP
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
2011/03/19 PHP
php的curl封装类用法实例
2014/11/07 PHP
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
javascript之bind使用介绍
2011/10/09 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
2013/11/25 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
jQuery简易时光轴实现方法示例
2017/03/13 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
bootstrap-Treeview实现级联勾选
2017/11/23 Javascript
create-react-app安装出错问题解决方法
2018/09/04 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
2018/12/28 Javascript
vue-form表单验证是否为空值的实例详解
2019/10/29 Javascript
在Vue中使用mockjs代码实例
2020/11/25 Vue.js
[02:51]DOTA2英雄基础教程 艾欧
2014/01/13 DOTA
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[01:12:27]EG vs Secret 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python Web服务器Tornado使用小结
2014/05/06 Python
python函数形参用法实例分析
2015/08/04 Python
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
python实现人机五子棋
2020/03/25 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
德国的各种媒体在线商店:Thalia.de(书籍、电子书、玩具等)
2020/10/08 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
课内比教学心得体会
2014/09/09 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
简易离婚协议书范本
2014/10/24 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
python实现网络五子棋
2021/04/11 Python
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL