关键在于将参数校验、权限控制、跳转逻辑嵌入守卫执行流:参数合法性须在跳转前验证,重定向目标须可控有效,动态路径需防注入;全局守卫适用于统一拦截动态路由,路由独享守卫更轻量精准;组件内守卫应对参数变更;重定向需过滤敏感参数并二次校验目标有效性。

处理带参数的路由拦截与重定向,关键不是“先取参数再判断”,而是把参数校验、权限控制、跳转逻辑三者嵌入守卫执行流中,避免漏判、误判或死循环。重点在于:参数合法性必须在跳转前验证,重定向目标必须可控且有效,动态路径拼接要防注入。
全局守卫中校验动态参数并安全重定向
适用于所有含 :id、:slug 等动态段的路由统一拦截场景。不能只依赖 to.params.id,需结合正则、类型、业务规则综合判断。
- 用
to.params取值后立即做基础校验,比如!to.params.id || isNaN(to.params.id)或!/^[a-z0-9-]{3,20}$/.test(to.params.slug) - 校验失败时,优先用
next(false)取消跳转(用户停留在原页),而非无条件跳转;若需跳默认页,明确指定路径如next({ name: 'ProductList' }) - 避免在守卫里拼接
`/product/${to.params.id}`后直接next()——这会再次触发守卫,可能造成循环;应确保重定向目标是已注册、无需参数校验的静态路由
路由独享守卫精准控制单条动态路由
比全局守卫更轻量、更聚焦,适合某条路由有强业务约束(如订单号必须为16位数字+字母组合)。
vue-composition-api-best-practices
Vue 3 组合式 API 与
热门下载
相关下载
精品课程
相关推荐
/
热门推荐
/
最新课程
最新文章
