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 相关文章推荐
在IE6下发生Internet Explorer cannot open the Internet site错误
Jun 21 Javascript
为原生js Array增加each方法
Apr 07 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
Oct 31 Javascript
JavaScript判断浏览器类型的方法
Feb 10 Javascript
jquery选择器简述
Aug 31 Javascript
jQuery插件dataTables添加序号列的方法
Jul 06 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
Aug 31 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
Sep 15 Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
Apr 17 Javascript
node 标准输入流和输出流代码实例
Sep 19 Javascript
VueCli4项目配置反向代理proxy的方法步骤
May 17 Javascript
JavaScript流程控制(循环)
Dec 06 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
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
php生成图片缩略图的方法
2015/04/07 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
海量经典的jQuery插件集合
2010/01/12 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
基于原生JS实现图片裁剪
2016/08/01 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
简单的js表格操作
2016/09/24 Javascript
探究JavaScript中的五种事件处理程序方式
2016/12/07 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
vue实现商城购物车功能
2017/11/27 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
关于js陀螺仪的理解分析
2019/04/11 Javascript
详解async/await 异步应用的常用场景
2019/05/13 Javascript
一次微信小程序内地图的使用实战记录
2019/09/09 Javascript
Node绑定全局TraceID的实现方法
2019/11/14 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
python Pandas库基础分析之时间序列的处理详解
2019/07/13 Python
python中count函数简单用法
2020/01/05 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
Pytorch 卷积中的 Input Shape用法
2020/06/29 Python
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
世界上最好的儿童品牌:AlexandAlexa
2018/01/27 全球购物
大学生自我鉴定范文模板
2014/01/21 职场文书
幼儿园教师获奖感言
2014/03/11 职场文书
保护环境倡议书500字
2014/05/19 职场文书
街道党工委党的群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
小学一年级学生评语大全
2014/12/25 职场文书
全新239军机修复记
2022/04/05 无线电