美文网首页
Vue addRoute实现动态权限路由菜单

Vue addRoute实现动态权限路由菜单

作者: A郑家庆 | 来源:发表于2021-07-21 19:36 被阅读0次

    背景

    最近项目需要添加页面权限,根据不同权限的用户显示不同的页面

    思路

    登录成功之后将后端返回的页面数据处理成自己需要的格式,遍历处理好的数据,然后通过router.addRoute方法将每个数据添加到路由当中即可,退出登录的时候需要初始化路由

    遇到的问题

    • 刷新页面路由初始化
    • 保存数据丢失
    • 重复添加路由

    刷新页面路由初始化

    可以在main.js中引入一个新建的文件permission.js,每次刷新的时候都会执行一次路由添加

    保存数据丢失

    我一开始把数据存入sessionStorage中,发现里面的文件数据没有了,后来才意识到sessionStorage是不保存文件数据的,另外我用JSON.parse(JSON.stringify())深拷贝数据的时候发现文件数据也丢失了,所以这里路由的component可以动态添加,不要写死,如果vuex数据不保存到sessionStorage中就不需要动态添加了.

    重复添加路由

    当我登录用户然后退出登录,再次登录之后就会发现页面报错,刷新页面就不会报错,后来才发现是因为我每次登录都会重复添加路由导致的,刷新页面因为路由初始化了所以报错消失了.
    解决方式:

    function resetRouter () {
      const newRouter = createRouter()
      router.matcher = newRouter.matcher
    }
    const createRouter = () => {
      return new VueRouter({
         routes: routerArr
      })
    }
    

    相关文章

      网友评论

          本文标题:Vue addRoute实现动态权限路由菜单

          本文链接:https://www.haomeiwen.com/subject/memrmltx.html