AntDesignPro的权限控制和动态路由
最近看了AntDesignPro关于权限控制的官方文档以及自己框架里权限控制的实现,总结一下。
先贴一下官网上关于权限控制的图有利于理解
步骤如下:
- 判断是否有
AccessToken
如果没有则跳转到登录页面 - 获取用户信息和拥有权限
store.dispatch('GetInfo')
- 用户信息获取成功后, 调用
store.dispatch('GenerateRoutes', userInfo)
根据获取到的用户信息构建出一个已经过滤好权限的路由结构(src/store/modules/permission.js
) - 将构建的路由结构信息利用
Vue-Router
提供的动态增加路由方法router.addRoutes
加入到路由表中 - 加入路由表后将页面跳转到用户原始要访问的页面,如果没有
redirect
则进入默认页面 (/dashboard/workplace
)
大概思路是在用户登陆时拿到该用户的角色,根据角色可以知道该角色对应有哪些菜单,然后通过一个逻辑方法 将这些从数据库拿来的菜单数据进行处理(递归处理子菜单,加入映射的组件等),筛选并组合成router所需要的数据格式的数组,最终在路由守卫中将这个数组router.addRoutes()添加到路由中
其实不管是动态路由还是mock数据,最终都是处理成一样的符合路由结构的一个数组后进行router.addRoutes()。
我的框架中菜单的权限实际上已经在接口中被过滤掉了,拿到的数据都是该角色有权限的菜单,下图中的permission参数在antdvpro中指的是指令权限,也就是action级别的权限
action级别的权限控制,在组件上加上v-action:[method],即可实现自行判断权限
AntDesignPro的权限控制和动态路由的更多相关文章
- SAAS云平台搭建札记: (三) AntDesign + .Net Core WebAPI权限控制、动态菜单的生成
我们知道,当下最火的前端框架,非蚂蚁金服的AntDesign莫属,这个框架不仅在国内非常有名,在国外GitHub上React前端框架也排名第一.而且这个框架涵盖了React.Vue.Angular等多 ...
- Vue页面权限控制和动态添加路由
原文转自:点我 页面权限控制 页面权限控制是什么意思呢? 就是一个网站有不同的角色,比如管理员和普通用户,要求不同的角色能访问的页面是不一样的.如果一个页面,有角色越权访问,这时就得做出限制了. Vu ...
- vue+iview实现动态路由和权限验证
github上关于vue动态添加路由的例子很多,本项目参考了部分项目后,在iview框架基础上完成了动态路由的动态添加和菜单刷新.为了帮助其他需要的朋友,现分享出实现逻辑,欢迎一起交流学习. Gith ...
- Vue 动态路由的实现以及 Springsecurity 按钮级别的权限控制
思路: 动态路由实现:在导航守卫中判断用户是否有用户信息,通过调用接口,拿到后台根据用户角色生成的菜单树,格式化菜单树结构信息并递归生成层级路由表并使用Vuex保存,通过 router.addRout ...
- Vue | 自定义指令和动态路由实现权限控制
功能概述: 根据后端返回接口,实现路由动态显示 实现按钮(HTML元素)级别权限控制 涉及知识点: 路由守卫 Vuex使用 Vue自定义指令 导航守卫 前端工程采用Github开源项目Vue-elem ...
- SpringCloud之初识Zuul(网关)---动态路由,权限验证
通过前面的学习,使用Spring Cloud实现微服务的架构基本成型,大致是这样的: 我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现:而服务间通过 ...
- Vue 实现动态路由及登录&404页面跳转控制&页面刷新空白解决方案
Vue实现动态路由及登录&404页面跳转控制&页面刷新空白解决方案 by:授客 QQ:1033553122 开发环境 Win 10 Vue 2.9.6 node-v ...
- 使用VUE开发用户后台时的动态路由问题、按钮权限问题以及其他页面处理问题
如今前后端分离是大势所趋,笔者虽然是做后台的,但也不得不学学前端的流行框架VUE -_-||| . 为了学习VUE,笔者搭建了一个简单的用户后台,以此来了解VUE的开发思路(注:本项目不用于实际开发, ...
- Vue管理系统前端系列六动态路由-权限管理实现
目录 为什么要使用动态路由? 主流的两种实现方式 前端控制 后端控制 后端控制路由 实现 添加菜单接口 及 菜单状态管理 根据得到的菜单生成动态路由 根据 vuex 中的暂存的菜单生成侧边菜单栏 退出 ...
随机推荐
- java的套接字实现远程连接
package jnet;//客户端程序,使用套接字连接服务器import java.net.*;import java.io.*;import javax.swing.*; public class ...
- 如何改变Xcode字体大小?
运行Xcode后依次点击左上角Xcode/Preferences/Fonts & Colors里就可以调整,在右边随便点中一个字体就可以调整这个字体的大小和颜色了,按command+a可以将所 ...
- 第十一节:configParse模块
作用:配置文件解析模块,用来增删改查配置文件内容,不区分大小写 配置文件案例: tets.ini [模块] key=value import configparser config = configp ...
- Salesforce考试 | 如何维护我的Salesforce认证
问题1 Salesforce证书是需要每年维护吗? Salesforce每年会发布3次Realese,分别是Spring.Summer和Winter,可以理解为一年3次的系统新版本更新,每次Relea ...
- Delphi程序启动参数的读取
Delphi中有两个专门用于读取命令行参数的变量: Paramcount-->用于返回命令行参数的个数 Paramstr数组-->用于返回指定的命令行参数 示例代码 ...
- async,await执行流看不懂?看完这篇以后再也不会了
昨天有朋友在公众号发消息说看不懂await,async执行流,其实看不懂太正常了,因为你没经过社会的毒打,没吃过牢饭就不知道自由有多重要,没生过病就不知道健康有多重要,没用过ContinueWith就 ...
- python-Django与Nginx整合gunicorn模块
1.pip install gunicorn 2.修改Nginx配置文件 vim /etc/nginx/conf.d/virtual.conf server { listen ; #listen so ...
- 进程管理工具 Supervisor
要想在终端后台常驻进程,首先想到的是在命令后加 & 符号,来达到隐藏程序在后台的目的,尽管看起来进程已经在后台运行了,实际上终端会话关闭时进程还是会被 kill 掉,这种问题一般是采用搭配 n ...
- Hbase详细架构图解
@ 目录 主要组件 数据模型 注意:Hbase是依赖zookeeper和hdfs的,需要启动zk和hdfs. 主要组件 Zookeeper: HBase 通过 Zookeeper 来做 Master ...
- 共享文件夹下其他文件可以访问但php文件访问不了的原因
刚开始的问题是在virtualbox里的共享文件夹下的项目运行不了,原因是宝塔下nginx的用户和用户组默认是www 和 www 需要改成www vboxsf(因为自动挂载的目录为/media/sf_ ...