vue router+vuex实现首页登录验证判断逻辑


Posted in Javascript onMay 17, 2018

首页登录逻辑要求在页面上判断是否获取到登录token ,没有获取到则跳转到登录页。登录成功后,跳转到前一个页面。

1.vue router

路由判断首先我们想到的是router.beforeEach 前置导航守卫 ,这个方法接受三个参数 to from next 。

to参数为即将跳转的路由路径,from为当前导航正要离开的路由,next方法用来resolve这个钩子。

下面以工作中写的一个判断为为例子:

router.beforeEach(async (to, from, next) => {
 const { name, meta } = to;
 const { requireLogin } = meta;
 if (name === 'login') { // 如果是登录页则用next方法resolve掉这个钩子,如果不是,进行到下一个判断
  return next();  
 }
 const needLogin = requireLogin && !store.getters.user.isLogin; // 从store中读取是否获取了已登录的信息
 if (needLogin) {
  return next({  // 如果没有则跳转到登录页,将当前路由路径放到参数中
   name: 'login',
   params: { back: to },
  });
 }
 return next(); 
});

2. this.$router 与 this.$route   this.$router.push 与 this.$router.replace

在登录页完成登录请求后进行下面的操作

获取路径中存放前一个路径的参数 ,然后跳转到该页面

loginSuccess() {
   const { params: { back } } = this.$route;
   const route = back || { name: 'home' };
   const { name, params, query } = route;
   this.$router.replace({ name, params, query });
  },

在上面这段代码中出现了两个我们经常混淆的概念:

我们知道this.$router是router实例,可以用来直接访问路由。我们称router配置中每一个对象为一个路由记录,this.$route是暴露出来用来访问每个路由记录的。因此我们获取参数时使用的是this.$route 跳转路由时使用的是道this.$router。

上端代码中我们使用了replace而不是push来跳转路由,这两者的区别是会不会在history中产生记录。replace不会新增记录,而是直接替换掉了这条路由记录。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 核心参考教程 内置对象
Oct 13 Javascript
JQuery对表单元素的基本操作使用总结
Jul 18 Javascript
JavaScript插件化开发教程(六)
Feb 01 Javascript
jQuery结合HTML5制作的爱心树表白动画
Feb 01 Javascript
jQuery.each使用详解
Jul 07 Javascript
JSON遍历方式实例总结
Dec 07 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
Nov 05 Javascript
JavaScript程序设计高级算法之动态规划实例分析
Nov 24 Javascript
Vue中自定义全局组件的实现方法
Dec 08 Javascript
如何编写一个d.ts文件的步骤详解
Apr 13 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
Aug 14 Javascript
如何使用Javascript中的this关键字
May 28 Javascript
浅谈webpack-dev-server的配置和使用
May 17 #Javascript
Node.js模块全局安装路径配置方法
May 17 #Javascript
create-react-app修改为多页面支持的方法
May 17 #Javascript
vue 不使用select实现下拉框功能(推荐)
May 17 #Javascript
微信小程序自定义多选事件的实现代码
May 17 #Javascript
vue 标签属性数据绑定和拼接的实现方法
May 17 #Javascript
JS实现的判断方法、变量是否存在功能示例
Mar 28 #Javascript
You might like
深入密码加salt原理的分析
2013/06/06 PHP
php操作XML、读取数据和写入数据的实现代码
2014/08/15 PHP
PHP SPL标准库之SplFixedArray使用实例
2015/05/12 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
2017/11/20 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
JavaScript 字符编码规则
2009/05/04 Javascript
让FireFox支持innerText的实现代码
2009/12/01 Javascript
JS中的public和private对象,即static修饰符
2012/01/18 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
2017/03/21 jQuery
bootstrap+jQuery实现的动态进度条功能示例
2017/05/25 jQuery
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
2018/09/28 Javascript
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
python开发中module模块用法实例分析
2015/11/12 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
手把手教你进行Python虚拟环境配置教程
2020/02/03 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
2020/10/28 Python
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
Internet主要有哪些网络群组成
2015/12/24 面试题
大二自我鉴定
2014/01/31 职场文书
教师开学感言
2014/02/14 职场文书
秘书英文求职信
2014/04/16 职场文书
教师学期个人总结
2015/02/11 职场文书
经销商会议开幕词
2016/03/04 职场文书
求职信如何撰写?
2019/05/22 职场文书