beforeEach路由拦截(全局

该博客介绍了如何在Vue.js应用中实现全局路由拦截,确保只有在用户授权后才能访问特定路由。通过检查`to.meta.iskey`属性来决定是否需要token验证。如果存在token则允许跳转,否则重定向到登录页面。此实现方式加强了应用的安全性和用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
在这里插入图片描述
meta字段,便于路由拦截的时候用于判断是否放行通过
true:是否显示
iskey是自定义的

//路由拦截(守卫)
//from是跳转前的路由(从哪儿来)
//to是跳转后的页面路由(到哪儿去
//next是必须要执行的,加上next路由才会跳转(next()允许跳转)
router.beforeEach((to,from,next) => {
   console.log(to)
   if(to.meta.iskey){//to.meta.iskey某几个需要授权的路由
      //判断本地储存中是否有路由
      if(localStorage.getItem('token')){
        next()//有token的话就继续执行
      }else{
        next('/login')//没有token的话就强制跳转到login页面
      }
   }else{
     next()
   }
})

我这里是在router文件夹下面单独创建的一个index文件里面做的全局路由拦截

### Vue3 中实现全局路由拦截Vue3 项目中,通过 `createRouter` 和 `createWebHistory` 或其他历史管理方法创建路由器实例时可以设置导航守卫来实现全局路由拦截。具体来说,在定义好所有的路由之后,利用 `router.beforeEach()` 来注册一个全局前置守卫[^1]。 对于基于 Vue3 构建的应用程序而言,如果要集成 UniApp 并且想要实现在整个应用范围内生效的路由拦截,则可以在项目的入口文件(通常是 main.js 或 app.vue)里配置这些钩子函数: ```javascript import { createRouter, createWebHashHistory } from 'vue-router' // 导入页面组件... const routes = [ // 定义路由表项... ] const router = createRouter({ history: createWebHashHistory(), routes, }) // 全局前置守卫 router.beforeEach((to, from, next) => { const isAuthenticated = /* 检查认证状态 */; if (to.matched.some(record => record.meta.requiresAuth)) { if (!isAuthenticated) { next({ path: '/login' }); } else { next(); } } else { next(); } }) ``` 当涉及到像微信小程序这样的平台时,由于其特殊的跳转机制,直接使用标准的 Vue Router 可能无法满足需求。因此,在某些特定情况下,如处理 TabBar 页面之间的切换时,应该考虑采用不同的策略,例如监听页面显示事件 `onShow` 进行相应的逻辑控制[^2]。 为了确保跨不同环境的一致行为,建议开发者仔细阅读官方文档并测试各种可能的情况以找到最适合当前项目的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值