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 相关文章推荐
jquery $.getJSON()跨域请求
Dec 21 Javascript
Jquery通过Ajax方式来提交Form表单的具体实现
Nov 07 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
Aug 05 Javascript
详解Document.Cookie
Dec 25 Javascript
javascript鼠标右键菜单自定义效果
Dec 08 Javascript
jquery html动态添加的元素绑定事件详解
May 24 Javascript
jQuery中值得注意的trigger方法浅析
Dec 12 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
Feb 22 Javascript
vue-cli实现多页面多路由的示例代码
Jan 30 Javascript
解决vue 更改计算属性后select选中值不更改的问题
Mar 02 Javascript
Angular设置别名alias的方法
Nov 08 Javascript
Vue 打包后相对路径的引用问题
Jun 05 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
后宫无数却洁身自好的男主,唐三只爱小舞
2020/03/02 国漫
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
JavaScript的parseInt 进制问题
2009/05/07 Javascript
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
2014/12/19 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
2015/09/17 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
JavaScript从数组的indexOf()深入之Object的Property机制
2016/05/11 Javascript
谈谈jQuery之Deferred源码剖析
2016/12/19 Javascript
Jquery实时监听input value的实例
2017/01/26 Javascript
JS实现点击复选框变更DIV显示状态的示例代码
2017/12/18 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
深入浅析nuxt.js基于ssh的vue通用框架
2019/05/21 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
jQuery zTree树插件的使用教程
2019/08/16 jQuery
JavaScript arguments.callee作用及替换方案详解
2020/09/02 Javascript
Python验证码识别处理实例
2015/12/28 Python
python3 爬取图片的实例代码
2018/11/06 Python
如何使用python进行pdf文件分割
2019/11/11 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
pytorch梯度剪裁方式
2020/02/04 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
Python3监控疫情的完整代码
2020/02/20 Python
python中元组的用法整理
2020/06/15 Python
python实现b站直播自动发送弹幕功能
2021/02/20 Python
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
数控专业应届生求职信
2013/11/27 职场文书
毕业生护理专业个人求职信范文
2014/01/04 职场文书
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
两只小狮子教学反思
2014/02/05 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
《社戏》教学反思
2014/04/15 职场文书
程序员求职信
2014/04/16 职场文书
婚育证明样本
2015/06/16 职场文书