Vue 路由 路由守卫

路由守卫
正如其名, vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。简单来说,就是在路由跳转
时候的一些钩子,当从一个页面跳转到另一个页面时,可以在跳转前、中、后做一些事情。
当你打开一个页面的前后需要去干什么。
每个守卫方法接收参数:

  • to:即将要进入的目标,是一个路由对象
  • from:当前导航正要离开的路由,也是一个路由对象
  • next:可选,是一个方法,直接进入下一个路由

你可以使用 router.beforeEach 注册一个全局前置守卫,当一个导航触发时,就会异步执行这个回调函数。

to是指从哪个页面来,from代表从根目录来。to:从哪来 from:到哪去

复制代码
//2.创建路由实例并传递上面路由对象routes
    const router = createRouter({
//路由的一种前端展现方式,通常使用这个就行了
        history: createWebHistory(),
        routes
  }
)

//定义前置路由守卫。进入某个页面之前需要干什么
router.beforeEach((to,from,next) => {
    console.log(to)
    console.log(from)
})
Go 复制代码
router.beforeEach((to, from, next) => {
//如果用户访问登录页,直接放行
    if(to.path == '/login') {
        return next()
}

const token = '' //模拟token,正常是从本地cookie或localstorage中获取

if (token) {
    return next() //如果有token,则正常跳转访问
} else {
    return next('/login') //如果没有token,跳转到登录页
}
})

一.全局守卫

1.全局前置守卫

语法:

复制代码
 router.beforeEach((to,from,next)=>{})

参数说明:
to :进入到哪个路由去
from :从哪个路由离开
next:函数,决定是否展示你要看到的路由页面。

示例:

main.js 中设置全局守卫

  • 在main.js中,有一个路由实例化对象router。在main.js中设置守卫已是全局守卫。

  • 如下,判断to.path当前将要进入的路径是否为登录或注册,如果是就执行next(),展示当前界面。如果不是,就弹出alert,然后移至登录界面。

  • 这样就可实现,用户在未登录状态下,展示的一直是登录界面。

    router.beforeEach((to,from,next)=>{
    if(to.path == '/login' || to.path == '/register'){
    next();
    }else{
    alert('您还没有登录,请先登录');
    next('/login');
    }})

相关推荐
qq_366577517 分钟前
Vue3创建项目,只能localhost访问问题处理
前端·javascript·vue.js
笨笨狗吞噬者40 分钟前
【uniapp】小程序实现自由控制组件JSON文件配置
vue.js·微信小程序·vite
龙国浪子1 小时前
小说写作软件中的文本高亮功能:基于 TipTap 的多彩标记技术实现
vue.js·electron
武昌库里写JAVA2 小时前
Java如何快速入门?Java基础_Java入门
java·vue.js·spring boot·后端·sql
Irene19912 小时前
Element UI 及其 Vue 3 版本 Element Plus 发展现状
前端·vue.js·ui
Account_Ray2 小时前
vue3 的专属二维码组件 vue3-next-qrcode 迎来 4.0.0 版本
前端·vue.js·nuxt.js
帧栈2 小时前
开发避坑指南(70):Vue3 Http请求头携带token下载pdf文件解决方案
前端·vue.js
q_19132846954 小时前
基于SpringBoot2+Vue2的宠物健康医疗论坛系统
vue.js·spring boot·mysql·健康医疗·宠物·计算机毕业设计
一 乐5 小时前
健身达人小程序|基于java+vue健身达人小程序的系统设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·小程序
小云朵爱编程14 小时前
Vue项目Iconify的使用以及自定义图标,封装图标选择器
前端·javascript·vue.js