vue导航守卫

本文探讨了Vue Router中的拦截器(如全局前置、后置守卫)和导航守卫的不同用途,重点讲解了它们如何限制请求数据和页面访问,以及在登录验证中的具体应用。同时介绍了组件内守卫和路由独享守卫的实现细节。
摘要由CSDN通过智能技术生成

拦截器和导航守卫

相同点:都有拦截的意思

不同点:拦截的目的不一样

拦截器:限制请求数据

导航守卫:限制访问页面

 全局前置守卫


router.beforeEach((to, from, next) => {
    console.log(to.path);
    console.log(from);
    if (to.path == '/home') {
        let token = localStorage.getItem('token_bef')
        if (token) {
            next()
        } else {
            next('/login')
        }
    } else {

        next()
    }
})
//login组件

methods: {
    fn(){
        localStorage.setItem('token_bef',88888)
    }
}

参数1:to=>往哪里去 $route

参数2:from=>从哪里来 $route

参数3:next是否允许访问

        next() 允许访问ok

        next(false) 不允许访问

        next(路径) 重定向 需要加条件

全局后置守卫


router.afterEach((to,from)=>{
    console.log(to);
    console.log(from);
    if(to.path=='/home'&&from.path=='/list'){
        localStorage.removeItem('token_bef')
    }
    next()
})

路由独享守卫


{
    path: '/home', component: Home,
    beforeEnter(to, from, next) {
        let token = localStorage.getItem('token_bef')
        if (token) {
            next()
        } else {
            next('/login')
        }
    }
}

组件内的守卫


进入之前 

/home/export default{}

beforeRouteEnter(to, from, next) {
    console.log("beforeRouteEnter");
    let token = localStorage.getItem("token_bef");
    if (token) {
    next();
    } else {
    next("/login");
    }
    next();
},

/login/

methods: {
    fn(){
        localStorage.setItem('token_bef',88888)
        this.$router.push('/home')
    }
}

更新之前

router.js

path: '/home/:id?', component: Home,

/home/

<template>
  <div>
    <router-link to="/home/1">ONE</router-link>
    <router-link to="/home/2">TWO</router-link>
    <h1>home-frontpage-----{{ id }}</h1>
  </div>
</template>

/home/export default{}

data() {
    return {
    id: 0,
    };
},

beforeRouteUpdate(to, from, next) {
    console.log("beforeRouteUpdate");
    this.id = to.params.id;
    next();
},

离开之前

home/export default{}

beforeRouteLeave(to, from, next){
    console.log('beforeRouteLeave');
    localStorage.removeItem('token_bef')
    next()
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值