Vue的路由权限管理

这次给大家带来Vue的路由权限管理,Vue路由权限管理的注意事项有哪些,下面就是实战案例,一起来看一下。

前言

曾经在工作上对 vue 路由权限管理这方面有过研究,这几天又看到了几篇相关的文章,再加上昨天电面中又再一次提及到,就索性整理了一下自己的一些看法,希望对大家有帮助。

实现

大体上实现的思路很简单,先上图:

Vue的路由权限管理

无非是将路由配置按用户类型分割为 用户路由 和 基本路由,不同的用户类型可能存在不同的 用户路由,具体依赖实际业务。

用户路由: 当前用户所特有的路由

基本路由:所有用户均可以访问的路由

实现控制的方式分两种:

通过vue-router addRoutes 方法注入路由实现控制
通过vue-router beforeEach 钩子限制路由跳转

addRoutes 方式:

通过请求服务端获取当前用户路由配置,编码为 vue-router 所支持的基本格式(具体如何编码取决于前后端协商好的数据格式),通过调用 this.$router.addRoutes 方法将编码好的用户路由注入到现有的 vue-router 实例中去,以实现用户路由。

beforeEach 方式

通过请求服务端获取当前用户路由配置,通过注册 router.beforeEach 钩子对路由的每次跳转进行管理,每次跳转都进行检查,如果目标路由不存再于 基本路由 和 当前用户的 用户路由 中,取消跳转,转为跳转错误页。

以上两种方式均需要在 vue-router 中配置错误页,以保证用户感知权限不足。

两种方式的原理其实都是一样的,只不过 addRoutes 方式 通过注入路由配置告诉 vue-router :“当前我们就只有这些路由,其它路由地址我们一概不认”,而 beforeEach 则更多的是依赖我们手动去帮 vue-router 辨别什么页面可以去,什么页面不可以去。说白了也就是 自动 与 手动 的差别。说到这,估计大家都会觉得既然是 自动 的,那肯定是 addRoutes 最方便快捷了,还能简化业务代码,笔者一开始也是这么认为的,但是!很多人都忽略了一点:

Vue的路由权限管理

addRoutes 方法仅仅是帮你注入新的路由,并没有帮你剔除其它路由!

设想存在这么一种情况:用户在自己电脑上登录了管理员账号,这个时候会向路由中注入管理员的路由,然后再退出登录,保持页面不刷新,改用普通用户账号进行登录,这个时候又会向路由中注入普通用户的路由,那么,在路由中将存在两种用户类型的路由,即使用户不感知,通过改变 url,普通用户也可以访问管理员的页面!

对于这个问题,也有一个解决办法:

import Vue from 'vue'import Router from 'vue-router'Vue.use(Router)const createRouter = () => new Router({ mode: 'history', routes: []})const router = createRouter()export function resetRouter () { const newRouter = createRouter() router.matcher = newRouter.matcher}export default router

登录后复制

通过新建一个全新的 Router,然后将新的 Router.matcher 赋给当前页面的管理 Router,以达到更新路由配置的目的。

笔者做了一个小demo,大家可以去体验一下。

关于上述问题,在vue-router 的 github issues 下有过讨论,分别是:

Add option to Reset/Delete Routes #1436

Feature request: replace routes dynamically #1234

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

在angularjs压缩后文件报错怎么解决

在vue中如何使用axios进行跨域处理

以上就是Vue的路由权限管理的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2778432.html

(0)
上一篇 2025年3月8日 15:30:37
下一篇 2025年3月5日 19:56:10

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vue的单页应用前端路由使用详解

    这次给大家带来vue的单页应用前端路由使用详解,vue单页应用前端路由使用的注意事项有哪些,下面就是实战案例,一起来看一下。 写在前面:通常 SPA 中前端路由有2种实现方式: window.history location.hash 下面…

    编程技术 2025年3月8日
    200
  • AngularJS怎么重新加载路由页面

    这次给大家带来AngularJS怎么重新加载路由页面,AngularJS重新加载路由页面的注意事项有哪些,下面就是实战案例,一起来看一下。 用angular做项目,会碰到需要点击菜单刷新当前页面,加载当前页面,但是同一个路由页面点击没反应;…

    编程技术 2025年3月8日
    200
  • Vue2.0怎样操作用户权限

    这次给大家带来Vue2.0怎样操作用户权限,Vue2.0操作用户权限的注意事项有哪些,下面就是实战案例,一起来看一下。 Vue-Access-Control是一套基于Vue/Vue-Router/axios 实现的前端用户权限控制解决方案,…

    编程技术 2025年3月8日
    200
  • JS实现路由跳转步奏详解

    这次给大家带来JS实现路由跳转步奏详解,JS实现路由跳转的注意事项有哪些,下面就是实战案例,一起来看一下。 JS的是使用对很多人来说是非常频繁的,同时js也有着非常强大的制作效果。这次文章就给大家介绍下使用js实现路由跳转效果示例代码,希望…

    编程技术 2025年3月8日
    200
  • Vue 动态设置路由参数步骤详解

    这次给大家带来Vue 动态设置路由参数步骤详解,Vue 动态设置路由参数的注意事项有哪些,下面就是实战案例,一起来看一下。 在vue中 可以动态设置路由参数: 1.使用this.$router.go(),与js histroy.go() 用…

    编程技术 2025年3月8日
    200
  • vue 单页应用前端路由如何配置

    这次给大家带来vue 单页应用前端路由如何配置,vue 单页应用前端路由配置的注意事项有哪些,下面就是实战案例,一起来看一下。 写在前面:通常 SPA 中前端路由有2种实现方式: window.history location.hash 下…

    编程技术 2025年3月8日
    200
  • vue组建与路由使用总结

    这次给大家带来vue组建与路由使用总结,vue组建与路由使用的注意事项有哪些,下面就是实战案例,一起来看一下。 1、组件三种挂载方式 自动挂载 var app3 = new Vue({ el: ‘#app-3’, data: { seen:…

    编程技术 2025年3月8日
    200
  • vue激活当前路由步骤详解

    这次给大家带来vue激活当前路由步骤详解,vue激活当前路由的注意事项有哪些,下面就是实战案例,一起来看一下。 一个 route object(路由信息对象) 表示当前激活的路由的状态信息,包含了当前 URL 解析得到的信息,还有 URL …

    2025年3月8日
    200
  • Vue三层嵌套路由使用心得

    这次给大家带来Vue三层嵌套路由使用心得,Vue三层嵌套路由使用的注意事项有哪些,下面就是实战案例,一起来看一下。 Vue嵌套路由: 实现效果(路由三层嵌套,点击一级tab显示二级tab效果,二级tab点击切换对应内容,不在tab区域里的内…

    2025年3月8日
    200
  • react router4+redux控制路由权限步骤详解

    这次给大家带来react router4+redux控制路由权限步骤详解,react router4+redux控制路由权限的注意事项有哪些,下面就是实战案例,一起来看一下。 总体概述 一个完善的路由系统应该是这样子的,当链接到的组件是需要…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论