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 相关文章推荐
Chrome下ifame父窗口调用子窗口的问题示例探讨
Mar 17 Javascript
js给网页加上背景音乐及选择音效的方法
Mar 03 Javascript
JavaScript实现点击自动选择TextArea文本的方法
Jul 02 Javascript
学习JavaScript设计模式之装饰者模式
Jan 19 Javascript
教你如何在Node.js中使用jQuery
Aug 28 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
Dec 06 Javascript
详解本地Node.js服务器作为api服务器的解决办法
Feb 28 Javascript
JS代码实现电脑配置检测功能
Mar 21 Javascript
js数组去重的N种方法(小结)
Jun 07 Javascript
Node.js使用supervisor进行开发中调试的方法
Mar 26 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
Sep 18 Javascript
vue+spring boot实现校验码功能
May 27 Vue.js
浅谈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程序--记数器
2006/10/09 PHP
php ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
PHP 高级课程笔记 面向对象
2009/06/21 PHP
php 空格,换行,跳格使用说明
2009/12/18 PHP
PHP扩展CURL的用法详解
2014/06/20 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
PHP实现的解汉诺塔问题算法示例
2018/08/06 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
基于jquery的用鼠标画出可移动的div
2012/09/06 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
js时钟翻牌效果实现代码分享
2020/07/31 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
React Native 真机断点调试+跨域资源加载出错问题的解决方法
2018/01/18 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
2019/11/01 Javascript
vue实现将一个数组内的相同数据进行合并
2019/11/07 Javascript
python自动化测试之setUp与tearDown实例
2014/09/28 Python
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
ubuntu16.04制作vim和python3的开发环境
2018/09/23 Python
PyTorch 对应点相乘、矩阵相乘实例
2019/12/27 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
Fresh馥蕾诗英国官网:法国LVMH集团旗下高端天然护肤品牌
2018/11/01 全球购物
马来西亚最大的在线隐形眼镜商店:MrLens
2019/03/27 全球购物
linux面试题参考答案(9)
2016/01/29 面试题
美食节目策划方案
2014/05/31 职场文书
2016年校园社会综合治理宣传月活动总结
2016/03/16 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
浅析Django接口版本控制
2021/06/26 Python
关于CSS浮动与取消浮动的问题
2021/06/28 HTML / CSS
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏