vue-router 动态修改路由参数

路由地址后缀 /test?regionId=sj
用户信息中有匹配的行政区划权限数组 xzqh: ['sj','hz'], 且有字段表示改用户默认归属的行政区划 regionId: sj
当手动修改地址改成 /test?regionId=hz,因为 regionId 在符合的权限数组中,跳转到 /test?regionId=hz
当手动修改地址改成 /test?regionId=nb,重定向地址到 /test?regionId=sj

请问路由导航中这个逻辑如何实现
我在 beforeEach 钩子里判断 regionId 不符合权限数组后,配置 to.query.regionId ,路由地址并不会改变

阅读 3.5k
3 个回答

既然是权限,就不要放到URL中,这样不安全,可以放到vuex中

router.replace

手动修改路由参数,当它不符合某些条件,限制它跳转,重定向到默认路由

router.beforeEach((to, from, next) => {
       // 获取用户权限,允许操作哪些节点
      let permissionKey = xxx
      // 获取用户默认归属哪个节点
      let defaultRegion = xxx
      // 手动修改的 regionId 不在权限域内, 重定向到默认
      if(permissionKey.indexOf(to.query.regionId) === -1 && to.query.regionId !== defaultRegion?.key) {
      // 这里重定向到指定的
          router.push({ name: to.name, query: Object.assign(to.query, {
          regionId:  defaultRegion?.key
        })})
    next()
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题