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 事件执行检测代码
Dec 09 Javascript
JavaScript常用脚本汇总(二)
Mar 04 Javascript
详解JavaScript中Date.UTC()方法的使用
Jun 12 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
Sep 11 Javascript
Vue.js学习示例分享
Feb 05 Javascript
ztree实现权限横向显示功能
May 20 Javascript
vue 组件使用中的一些细节点
Apr 25 Javascript
JS实现数组深拷贝的方法分析
Mar 06 Javascript
js实现鼠标拖拽缩放div实例代码
Mar 25 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
Sep 24 Javascript
Vue3.x源码调试的实现方法
Oct 13 Javascript
uniapp引入支付宝原生扫码插件步骤详解
Jul 23 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 学习路线与时间表
2010/02/21 PHP
php通过ksort()函数给关联数组按照键排序的方法
2015/03/18 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
jQuery的强大选择器小结
2009/12/27 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
2013/05/14 Javascript
解析使用JS 清空File控件的路径值
2013/07/08 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
2014/11/17 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
Bootstrap零基础学习第一课之模板
2016/07/18 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
jQuery中ajax错误调试分析
2016/12/01 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
js实现瀑布流效果(自动生成新的内容)
2017/03/16 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
uniapp微信小程序实现一个页面多个倒计时
2020/11/01 Javascript
[01:11:02]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
python3抓取中文网页的方法
2015/07/28 Python
Python模拟登录验证码(代码简单)
2016/02/06 Python
python中enumerate函数遍历元素用法分析
2016/03/11 Python
python的socket编程入门
2018/01/29 Python
python实现接口并发测试脚本
2019/06/25 Python
下载官网python并安装的步骤详解
2019/10/12 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
python 发送邮件的四种方法汇总
2020/12/02 Python
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
世界著名的顶级牛排:Omaha Steak(奥马哈牛排)
2016/09/20 全球购物
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
竞选大队委员演讲稿
2014/04/28 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
Python中super().__init__()测试以及理解
2021/12/06 Python
5个pandas调用函数的方法让数据处理更加灵活自如
2022/04/24 Python