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 相关文章推荐
jQuery AnythingSlider滑动效果插件
Feb 07 Javascript
如何减少浏览器的reflow和repaint
Feb 26 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
Aug 13 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
Sep 26 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
Jun 13 Javascript
JavaScript组合模式学习要点
Aug 26 Javascript
es6系列教程_ Map详解以及常用api介绍
Sep 25 Javascript
微信小程序input框中加入小图标的实现方法
Jun 19 Javascript
小程序实现页面顶部选项卡效果
Nov 06 Javascript
vue实现点击按钮切换背景颜色的示例代码
Jun 23 Javascript
Vue-cli 移动端布局和动画使用详解
Aug 10 Javascript
JS如何使用剪贴板操作Clipboard API
May 17 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
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
Laravel框架FormRequest中重写错误处理的方法
2019/02/18 PHP
用脚本调用样式的几种方法
2006/12/09 Javascript
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
javascript与有限状态机详解
2014/05/08 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
2017/09/04 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
2019/11/07 Javascript
Vue 中 filter 与 computed 的区别与用法解析
2019/11/21 Javascript
[05:24]TI9采访——教练
2019/08/24 DOTA
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
2018/05/08 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
Python面向对象之Web静态服务器
2019/09/03 Python
Python获取时间戳代码实例
2019/09/24 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
StubHub哥伦比亚:购买和出售您的门票
2016/10/20 全球购物
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
企业军训感想
2014/02/07 职场文书
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
1000字打架检讨书
2014/11/03 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
2017年寒假社区服务活动总结
2016/04/06 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书
职场领导同事生日简短祝福语
2019/08/06 职场文书
正确使用MySQL update语句
2021/05/26 MySQL
Redis高可用集群redis-cluster详解
2022/03/20 Redis