Skip to content

路由导航守卫

  • 进行任何的路由跳转之前,传入beforeEach中的函数都会被回调

  • vue-router提供的导航首位主要用来通过跳转或取消的方式守卫导航

  • 全局的迁至后卫beforeEach是在导航触发时会被回调的

  • 它有两个参数:

    • to:即将进入的路由Route对象
    • from:即将离开的Route对象
  • 它有返回值:

    • false:取消当前导航
    • 不返回或则和undefined:进行默认导航
    • 返回一个路由地址:
      • 可以是一个string类型的路径
      • 可以是一个对象,对象中包含path、query、params等信息

进入到某页面时,跳转到login界面

javascript
router.beforeEach((to, from) => {
    if (to.path == '/user') {
        return '/login'
    }
})

判断用户是否登录

javascript
router.beforeEach((to, from) => {
    const token = localStorage.getItem("token")
    if (!token && to.path === "/user") {
        return "/login"
    }
javascript
<template>
    <h2>登录界面</h2>
    <button @click="login">登录</button>
</template>

<script setup>
    import { useRouter } from 'vue-router';

    const router = useRouter()

    function login() {
        localStorage.setItem("token", 123456)
        router.push("/user")
    }

    function logout() {
        localStorage.removeItem("token")
    }
</script>