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 相关文章推荐
用AJAX返回HTML片段中的JavaScript脚本
Jan 04 Javascript
Jquery+JSon 无刷新分页实现代码
Apr 01 Javascript
Extjs显示从数据库取出时间转换JSON后的出现问题
Nov 20 Javascript
js打造数组转json函数
Jan 14 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
Sep 13 Javascript
Angular.JS实现无限级的联动菜单(使用demo)
Feb 08 Javascript
微信小程序组件之srcoll-view的详解
Oct 19 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
Oct 24 Javascript
如何在wxml中直接写js代码(wxs)
Nov 14 Javascript
Vue 中使用 typescript的方法详解
Feb 17 Javascript
js实现表格单列按字母排序
Aug 12 Javascript
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
Mar 31 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实现获取文章内容第一张图片的方法
2014/11/04 PHP
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
eclipse php wamp配置教程
2016/06/30 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
绑定回车enter事件代码
2014/05/18 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
jquery中实现时间戳与日期相互转换
2016/04/12 Javascript
Node.js学习入门
2017/01/03 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
JS中Safari浏览器中的Date
2017/07/17 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
python学生管理系统
2019/01/30 Python
Python os.access()用法实例
2019/02/18 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
Django form表单与请求的生命周期步骤详解
2020/06/07 Python
python如何控制进程或者线程的个数
2020/10/16 Python
一道写SQL的面试题和答案
2013/11/19 面试题
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
女大学生自我鉴定
2013/12/09 职场文书
电子商务网站的创业计划书
2014/01/05 职场文书
迎接领导欢迎词
2014/01/11 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
药剂专业个人求职信范文
2014/04/29 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
公民代理授权委托书
2014/09/24 职场文书
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python
JS前端使用canvas实现物体的点选示例
2022/08/05 Javascript