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 Base类 包含基本的方法
Jul 22 Javascript
jquery提示 "object expected"的解决方法
Dec 13 Javascript
一个挺有意思的Javascript小问题说明
Sep 26 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
Feb 23 Javascript
javascript工厂方式定义对象
Dec 26 Javascript
jQuery实现提示密码强度的代码
Jul 15 Javascript
JS实现的最简Table选项卡效果
Oct 14 Javascript
js实现String.Fomat的实例代码
Sep 02 Javascript
BootStrap导航栏问题记录
Jul 31 Javascript
Vue 全家桶实现移动端酷狗音乐功能
Nov 16 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
Jun 16 Javascript
Vue循环中多个input绑定指定v-model实例
Aug 31 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
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
extjs render 用法介绍
2013/09/11 Javascript
extjs4 treepanel动态改变行高度示例
2013/12/17 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
2015/12/31 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
2016/11/25 Javascript
jstree的简单实例
2016/12/01 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
python实现数据写入excel表格
2018/03/25 Python
python频繁写入文件时提速的方法
2019/06/26 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
pytorch forward两个参数实例
2020/01/17 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
keras导入weights方式
2020/06/12 Python
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
俄罗斯奢侈品牌衣服、鞋子和配饰的在线商店:INTERMODA
2020/07/17 全球购物
EJB面试题
2015/07/28 面试题
圣诞节活动策划方案
2014/06/09 职场文书
保险公司开门红口号
2014/06/21 职场文书
党委领导班子整改方案
2014/09/30 职场文书
五四青年节活动总结
2015/02/10 职场文书
初中军训感想
2015/08/07 职场文书
小学信息技术教学反思
2016/02/16 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python