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 TextArea动态显示剩余字符
Oct 22 Javascript
预加载css或javascript的js代码
Apr 23 Javascript
jQuery替换字符串(实例代码)
Nov 13 Javascript
jquery实现textarea 高度自适应
Mar 11 Javascript
纯JS实现本地图片预览的方法
Jul 31 Javascript
JavaScript模拟push
Mar 06 Javascript
关于JavaScript限制字数的输入框的那些事
Aug 14 Javascript
JS+CSS3制作炫酷的弹窗效果
Nov 08 Javascript
jQuery实现拼图小游戏(实例讲解)
Jul 24 jQuery
9102年webpack4搭建vue项目的方法步骤
Feb 20 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
Mar 15 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
Aug 12 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
Smarty变量用法详解
2016/05/11 PHP
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
Span元素的width属性无效果原因及解决方案
2010/01/15 Javascript
编写高性能的JavaScript 脚本的加载与执行
2010/04/19 Javascript
jQuery插件开发全解析
2012/10/10 Javascript
js中的json对象详细介绍
2014/10/29 Javascript
2014最热门的JavaScript代码高亮插件推荐
2014/11/25 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
非常漂亮的相册集 使用jquery制作相册集
2016/04/28 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
JavaScript注入漏洞的原理及防范(详解)
2016/12/04 Javascript
Bootstrap源码解读导航条(7)
2016/12/23 Javascript
JS实现的样式切换功能tableCSS实例
2016/12/30 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
Vue2.0 v-for filter列表过滤功能的实现
2018/09/07 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
Javascript执行上下文顺序的深入讲解
2020/11/04 Javascript
HTML元素拖拽功能实现的完整实例
2020/12/04 Javascript
Python制作刷网页流量工具
2017/04/23 Python
通过python顺序修改文件名字的方法
2018/07/11 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
Pytoch之torchvision.transforms图像变换实例
2019/12/30 Python
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
优秀员工自荐书范文
2013/12/08 职场文书
运动会跳远加油稿
2014/02/20 职场文书
求职简历自荐信
2014/06/18 职场文书
经费申请报告
2015/05/15 职场文书
交通事故被告答辩状
2015/05/22 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书
MySql新手入门的基本操作汇总
2021/05/13 MySQL
各国货币符号大全
2022/02/17 杂记