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 相关文章推荐
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
Mar 09 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
Jan 06 Javascript
说说JSON和JSONP 也许你会豁然开朗
Sep 02 Javascript
jquery时间下拉框小例子
Apr 15 Javascript
javascript实现的网站访问量统计代码
Dec 20 Javascript
微信小程序 Image API实例详解
Sep 30 Javascript
jQuery实现的简单动态添加、删除表格功能示例
Sep 21 jQuery
详解HTML5 使用video标签实现选择摄像头功能
Oct 25 Javascript
angularJS实现动态添加,删除div方法
Feb 27 Javascript
利用原生的JavaScript实现简单拼图游戏
Nov 18 Javascript
如何让微信小程序页面之间的通信不再变困难
Jun 03 Javascript
Vue实现圆环进度条的示例
Feb 06 Vue.js
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
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
PHP未登录自动跳转到登录页面
2016/12/21 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
没有document.getElementByName方法
2013/08/19 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
js中对象和面向对象与Json介绍
2019/01/21 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
layui实现多图片上传并限制上传的图片数量
2019/09/26 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
Python reduce()函数的用法小结
2017/11/15 Python
python并发编程之线程实例解析
2017/12/27 Python
Pythony运维入门之Socket网络编程详解
2019/04/15 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
2019/12/27 Python
python标识符命名规范原理解析
2020/01/10 Python
基于python3生成标签云代码解析
2020/02/18 Python
python 实现简单的计算器(gui界面)
2020/11/11 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
十佳护士先进事迹
2014/05/08 职场文书
政府四风问题整改措施
2014/10/04 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
简短的36句中秋节祝福信息语句
2019/09/09 职场文书
2019年鼓励无偿献血倡议书
2019/09/17 职场文书
python创建字典及相关管理操作
2022/04/13 Python
Window server 2012 R2 AD域的组策略相关设置
2022/04/28 Servers