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 相关文章推荐
html a标签-超链接中confirm方法使用介绍
Jan 04 Javascript
jquery获取当前点击对象的value方法
Feb 28 Javascript
node.js中的buffer.length方法使用说明
Dec 14 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
Apr 12 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
Jun 23 Javascript
jQuery自定义动画函数实例详解(附demo源码)
Dec 10 Javascript
jquery实现全屏滚动
Dec 28 Javascript
JavaScript——DOM操作——Window.document对象详解
Jul 14 Javascript
BootStrap入门教程(一)之可视化布局
Sep 19 Javascript
关于webpack2和模块打包的新手指南(小结)
Aug 07 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
Aug 10 Javascript
jquery 时间戳转日期过程详解
Oct 12 jQuery
浅谈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
php学习之 数组声明
2011/06/09 PHP
php+ajax实现的点击浏览量加1
2015/04/16 PHP
学习php设计模式 php实现适配器模式
2015/12/07 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
js 分栏效果实现代码
2009/08/29 Javascript
Javascript在IE或Firefox下获取鼠标位置的代码
2009/12/18 Javascript
Javascript事件实例详解
2013/11/06 Javascript
JS实现根据出生年月计算年龄
2014/01/10 Javascript
原生javascript实现图片弹窗交互效果
2015/01/12 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
2017/03/21 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
2020/04/22 Javascript
python中pycurl库的用法实例
2014/09/30 Python
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
Python素数检测的方法
2015/05/11 Python
Python实现从URL地址提取文件名的方法
2015/05/15 Python
python使用wxpython开发简单记事本的方法
2015/05/20 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
Python实现遗传算法(二进制编码)求函数最优值方式
2020/02/11 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
详解css3中dispaly的Grid布局与Flex布局
2020/09/11 HTML / CSS
JustFab加拿大:女鞋、靴子、手袋和服装在线
2018/05/18 全球购物
应聘医药代表职位求职信
2013/10/21 职场文书
2014升学宴答谢词
2014/01/26 职场文书
班组安全员工作职责
2014/02/01 职场文书
电子商务专业学生职业生涯规划
2014/03/07 职场文书
社区两委对照检查材料
2014/08/23 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
Oracle创建只读账号的详细步骤
2021/06/07 Oracle
 Python 中 logging 模块使用详情
2022/03/03 Python