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 相关文章推荐
php上传图片并给图片打上透明水印的代码
Jun 07 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
Oct 24 Javascript
使用JavaScript构建JSON格式字符串实现步骤
Mar 22 Javascript
Winform客户端向web地址传参接收参数的方法
May 17 Javascript
leaflet的开发入门教程
Nov 17 Javascript
基于bootstrap风格的弹框插件
Dec 28 Javascript
新手vue构建单页面应用实例代码
Sep 18 Javascript
利用vue组件自定义v-model实现一个Tab组件方法示例
Dec 06 Javascript
vue构建动态表单的方法示例
Sep 22 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
Dec 13 Javascript
js实现无限层级树形数据结构(创新算法)
Feb 27 Javascript
基于JavaScript实现简单的轮播图
Mar 03 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
phpmail类发送邮件函数代码
2012/02/20 PHP
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
JQuery 图片滚动轮播示例代码
2014/03/24 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
原生js编写焦点图效果
2016/12/08 Javascript
关于前后端json数据的发送与接收详解
2017/07/30 Javascript
jQuery中each方法的使用详解
2018/03/18 jQuery
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
原生JS实现前端本地文件上传
2018/09/08 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
js计算最大公约数和最小公倍数代码实例
2019/09/11 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
关于小程序优化的一些建议(小结)
2020/12/10 Javascript
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
分析Python编程时利用wxPython来支持多线程的方法
2015/04/07 Python
Python实现文件复制删除
2016/04/19 Python
python获取当前运行函数名称的方法实例代码
2017/04/06 Python
Python正则抓取网易新闻的方法示例
2017/04/21 Python
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
html5定制表单_动力节点Java学院整理
2017/07/11 HTML / CSS
如何写辞职书
2015/02/26 职场文书
培训通知
2015/04/17 职场文书
同学聚会通知书
2015/04/20 职场文书