nuxt中使用路由守卫的方法步骤


Posted in Javascript onJanuary 27, 2019

1.在plugins文件下创建一个route.js

import { getCookie, setCookie } from '@/pages/logreg/api/cookie'
import axios from 'axios'

export default ({ app, store }) => {
 app.router.beforeEach((to, from, next) => {
  let isClient = process.client
  if (isClient) {
   let currentUrl = location.href
   if (currentUrl.indexOf('access_token=') !== -1) {
    let wechattoken = currentUrl.split('access_token=')[1]
    wechattoken = wechattoken.split('&')[0]
    setCookie('token', wechattoken, 5)
   }
   let token = getCookie('token')
   if (token) {
    store.state.user.userinfo.token = token
    axios
     .get('https://api.ass.net/pub/api/user_info', {
      params: {
       token
      }
     })
     .then(res => {
      res = res.data
      if (res.code == 0) {
       res = res.data
       res.headImg = res.headImg.replace('http:', 'https:')
       store.state.user.userinfo = Object.assign(
        {},
        store.state.user.userinfo,
        res
       )
      }
     })
     .catch(error => console.log(error))
   }
  }
  next()
 })
}

2.在nuxt.config.js里面配置

plugins: [
  { src: '@/plugins/route', ssr: true }
 ],

PS:Nuxt在axios请求拦截中使用路由

最近在开发一个网站,用的nuxt搭建的框架,因为需要在请求token过期之后提示用户重新登录并且返回登录页面,但是在axios的配置文件中使用router.push一直报错,都准备放弃使用公众组件去进行路由跳转了,但是天无绝人之路,最终在官方文档中找到了redirect,具体操作如下:

在axios的js文件中添加默认的方法,并且获取redirect,并且使用使用myredirect将redirect储存起来

let myredirect;
export default function ({redirect }) {
 myredirect = redirect;
}

在需要使用路由跳转的地方进行跳转(此处在判断token过期时跳转)

if (error.message.toString().slice(-3) === '401') {
  Vue.prototype.$message.error('登陆超时,请重新登陆...')
  setTimeout(function () {
   return myredirect('/login/login')
  }, 2000)
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
window.requestAnimationFrame是什么意思,怎么用
Jan 13 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
Feb 06 Javascript
JQuery操作tr和td内容的方法实例
Mar 06 Javascript
JS实现点击按钮后框架内载入不同网页的方法
May 05 Javascript
JavaScript实现添加、查找、删除元素
Jul 02 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
Sep 03 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
Dec 16 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
Nov 14 jQuery
图文讲解vue的v-if使用方法
Feb 11 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
Aug 17 Javascript
vue遍历对象中的数组取值示例
Nov 07 Javascript
JS定时器如何实现提交成功提示功能
Jun 12 Javascript
vue-cli构建vue项目的步骤详解
Jan 27 #Javascript
vue实现的仿淘宝购物车功能详解
Jan 27 #Javascript
详解vue路由篇(动态路由、路由嵌套)
Jan 27 #Javascript
实例讲解JS中pop使用方法
Jan 27 #Javascript
Vue.js实现的购物车功能详解
Jan 27 #Javascript
JS温故而知新之变量提升和时间死区
Jan 27 #Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
Jan 25 #Javascript
You might like
在PHP中使用与Perl兼容的正则表达式
2006/11/26 PHP
php实现基于openssl的加密解密方法
2016/09/30 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
2011/05/10 Javascript
jquery 笔记 事件
2011/11/02 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
深入理解jQuery layui分页控件的使用
2016/08/17 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
浅谈JS对象添加getter与setter的5种方法
2018/06/09 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
详解python的几种标准输出重定向方式
2016/08/15 Python
python模拟事件触发机制详解
2018/01/19 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
Django Rest framework三种分页方式详解
2019/07/26 Python
详解python中eval函数的作用
2019/10/22 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
Python-numpy实现灰度图像的分块和合并方式
2020/01/09 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
python实例化对象的具体方法
2020/06/17 Python
python输入中文的实例方法
2020/09/14 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
详解background属性的8个属性值(面试题)
2020/11/02 HTML / CSS
HTML5 weui使用笔记
2019/11/21 HTML / CSS
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
趣味比赛活动方案
2014/02/15 职场文书
社区母亲节活动记录
2014/03/06 职场文书
领导班子整改措施
2014/10/24 职场文书
2014年教学工作总结
2014/11/13 职场文书