Nuxt中全局路由守卫的写法

1、在middleware中定义,全局middleware或布局middleware中;(server端执行)

方法一:全局middleware中定义:

a、在middleware文件夹下新建auth.js文件,在此文件中通过上下文对象context.route实现路由拦截;

b、在nuxt.config.js文件的router配置项中引入该中间件;

// auth.js文件:
export default function ({store, route, $axios, redirect, req}) {
  console.log('全局中间件执行了');
  const { name } = route
  const auth = Cookie.get('auth')
  if (!auth && whiteList.indexOf(route.name) === -1 ) {
    return redirect('/login')
  }
}

// nuxt.config.js文件
export default {
    ....
    router:{
        middleware:['auth']   
    }
}

方法二:布局layout中middleware的定义;

  middleware({route, redirect}) {
    console.log('layout中的middleware执行了');
    if(!Cookie.get('auth') && whiteList.indexOf(route.name) === -1 ) {
      return redirect('/login')
    }
  }

2、plugin插件中定义;(client端执行)

a、在plugins文件夹下定义route.js文件,在该文件中通过router.beforeEach前置守卫或router.afterEach后置守卫进行拦截;

b、在nuxt.config.js配置文件中添加该plugin的配置; 

// plugins/route.js文件:
export default ({ app, redirect }) => {
  console.log('全局插件执行了')
  app.router.afterEach((to, from) => {
    if (!Cookie.get('auth') && whiteList.indexOf(to.name) === -1 ) {
      return redirect('/login')
    }
    next()
  })
}


// nuxt.config.js配置文件
export default {
    ....
      plugins: [ 
        { src: '~/plugins/route/route.js', ssr: false }
      ],
}

执行顺序:

server端:

 client:端:

       全局插件plugins;

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wen_文文

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值