首页 > 数码 正文

后台管理系统如何利用Vue-Router做权限验证管理

时间:2023-09-27 作者:佚名

前沿

后台管理系统中权限验证是比较核心的一块内容,每个登录用户都有对应的角色,每个角色都有对应的权限,比如普通用户只有查看权限,管理员用户有编辑权限,所以不同的用户角色登录进来后,看到的页面菜单是不一样的

今天我们就来讲一下在后台的权限管理系统中,Vue-Router是如何配合实现的

后台管理系统

具体实现

其实要实现起来也比较简单,主要是借助Vue-Router的两个api

1、addRoutes

通过 router.addRoutes 动态挂载路由信息,用户成功登录后,由后台返回当前用户所具有的权限菜单

// 登录成功后,后台返回权限数据如下 const menuList= [ { // 菜单名字 name: '文章管理', // 是否是菜单,true是,false是页面 isFolder: true, // 图标 icon: 'article', // 是否在导航栏不显示,false表示显示 hidden: false, // 路由url url: '/article', // 子菜单 menuList: [{ // 菜单名字 name: '文章编辑', // 是否是菜单,true是,false是页面 isFolder: false, // 图标 icon: 'edit', // 是否在导航栏不显示,false表示显示 hidden: false, // 路由url url: '/article/edit', // 子菜单 menuList: [], }] }, { name: '用户管理', isFolder: false, icon: 'user', hidden: false, url: '/user/manage', menuList: [], } ] // 我们根据Vue-Router需要的数据 // 把上面后台返回的数据做一次转化 const routes= [{ // 路由路径 path: '/article', // 如果是菜单,那么引用通用的布局模板 component: () => import('@/views/layout.vue'), meta: { // 图标 icon: 'article', // 菜单名字 title: '文章管理', // 是否在导航栏隐藏 hidden: false, }, children: [{ // 这是页面路由 path: '/article/edit', name: 'article/edit', // 具体的页面组件 component: () => import('@/views/article/edit.vue'), meta: { // 图标 icon: 'edit', // 页面名字 title: '文章编辑', // 是否在导航栏隐藏 hidden: false, }, }], }, { path: '/article/edit', name: 'article/edit', component: () => import('@/views/article/edit.vue'), meta: { icon: 'edit', title: '文章编辑', hidden: false, }, }, ] // 最开始的路由配置是有一个登录页的 const initRoutes = [ { path: '/login', name: 'Login', component: () => import('@/views/login'), meta: { icon: '', title: '登录', hidden: true, }, }, ] // 登录成功后 // 再把动态生成的路由信息和登录页的路由拼接起来 // 生成最后的路由信息 router.addRoutes(initRoutes.concat(routes)) // 最后通过router.push(url) // 跳转到动态生成的第一个路由页面

至于页面内部的按钮根据用户角色显示和隐藏,比如说普通用户是看不到页面的“编辑”按钮

其实我们可以在用户登录成功后,让后台再把当前这个用户的角色信息返回并存在Vuex中,比如返回['user']代表普通用户,返回['manage']代表管理员,返回['user','mange']代表又有管理员的权限和又有普通用户的权限,然后我们就可以在页面中根据这个值判定是否显示对应的按钮

2、beforeEach

通过 router.beforeEach 这个导航守卫,控制没有登录的用户,始终只能先去登录页登录,如果是已经登录过的,那么就直接进入对应页面

// 这里可以放一些,不需要权限校验的菜单 const NoAuthUrlList = [ '/500', '/demo', ] router.beforeEach((to, from, next) => { if (NoAuthUrlList.includes(to.path)) { // 不需要权限校验的,直接进入页面 next() } else { // 需要权限校验的 if (!store.getters.token) { // 没有token代表没有登录过 // 直接去登录页 next('/login') } else { // 有token // 直接进入登录页 next() } } })

好了Vue-Router做权限验证管理就讲到这里

觉得效果不错的请帮忙加个关注点个赞,经常分享前端实用开发技巧

本文信息为网友自行发布旨在分享与大家阅读学习,文中的观点和立场与本站无关,如对文中内容有异议请联系处理。

本文链接:https://www.paituo.cc/tech/1045071.html

  • 小编推荐

    mpg播放器能够在哪些设备上使用 MPG格式用什么播放器

    mpg播放器能够在哪些设备上使用,简介如下MPG播放器是人们在生活中常常使用的一种播放器,它是一种主流的数字媒体播放器,能够解码MPEG-1、MPEG-2、MPEG-4和AVC等格式的影片和音乐等多媒体...

    打开网页提示“该站点安全证书不可信或已作废”是怎么回事

    本文讲述打开网页提示“该站点安全证书不可信或已作废”是怎么回事,简介如下 使用IE浏览器的朋友在访问一些网站时也许会见过这样的提示“该站点的安全证书不可信.是否继续?”,或者遇到“该站点的安全证...

    Win10电脑不能进入睡眠模式的解决方法

    本文讲述Win10电脑不能进入睡眠模式的解决方法,简介如下 使用win10的过程中,忽然不能睡眠了,笔记本的盖子也合上,还是按电源键都只是把屏幕熄灭了,鼠标随便一动就又亮屏了,这就是不能进入睡眠模式的一现象,其实这是因...

    windows和Mac电脑怎么能传文件

    本文讲述windows和Mac电脑怎么能传文件,简介如下 Windows电脑之间可以直接互传文件,那么Mac电脑和Windows电脑可以互传文件吗?我们平时都是借助第三方软件来传文件,但是特别使用很麻烦,其实有更简单...

    联想笔记本安装原版Win10系统无法识别固态硬盘的解决方法

    本文讲述联想笔记本安装原版Win10系统无法识别固态硬盘的解决方法,简介如下 想要给自己的联想笔记本新增固态硬盘,安装原版ISO镜像的Win10系统到新的固态硬盘中,但是选择安装的硬盘的时候,却无法识别并找不到固态硬盘,那是什么原因呢?...

    win10电脑文件打不开只显示任务栏是怎么回事

    本文讲述win10电脑文件打不开只显示任务栏是怎么回事,简介如下 通过电脑的文件夹可以整理电脑的一些资料,平时只需要点击文件夹就可以进行处理,但是最近有的人发现自己的电脑打开文件夹,什么都不显示,但是只显示在任务栏,今天小编...

    电脑显示不出u盘怎么回事u盘插在电脑上找不到解决

    本文讲述电脑显示不出u盘怎么回事u盘插在电脑上找不到解决,简介如下 在使用u盘的时候会遇到这么一个问题,那就是电脑显示不出u盘,这个问题相信让大家都非常头疼。那么电脑检测不到u盘该怎么解决呢?接下来小编就给大家带来电脑显示不出...

    提示您的时钟快了一直打开不了网页电脑提示时钟快了怎么解决

    本文讲述提示您的时钟快了一直打开不了网页电脑提示时钟快了怎么解决,简介如下 有这么一个问题,就是打开网页的时候提示说“您的时钟快了”,然后一直打不开网页。那么电脑提示时钟快了该怎么解决呢?接下来小编就给大家带来...