vue前后分离动态路由和权限管理方案
需求
需要根据不同的角色来显示不同的菜单
问题
系统是前后分离模式开发的,出现了后端接口和前端路由都需要权限管理。
思路
- 后端的接口肯定得验证权限
- 在前端做好组件名和组件的映射
- 前端的路由通过后端发回的json动态生成,对于比较细粒度的可以通过css来控制和隐藏
方案
使用vue-router的router.addRoutes(routes)来动态生成路由。
注意事项
vue-router 是按照路由表里的顺序来查找路由的,如果你的404页面在动态添加的路由前面,则需要把404路由单独移出来,最后再添加。
示例代码
const Hello =
{
template : '<div>哈哈哈</div>'
}
const page404 =
{
path : '/*',
name : 'error_404',
meta :
{
title : '404-页面不存在'
},
component : resolve =>
{
require(['./views/error_page/404.vue'], resolve);
}
};
const router = new VueRouter();
//组件名和组件的映射
let comsMap =
{
"hello" : Hello
}
let resData = '[{"name":"首页","path":"/index","component":"hello"}]'; //表示从接口返回的数据
function paraseRouter(routerJson, router)
{
let dynamicRouters = [];
JSON.parse(routerJson).forEach(r=>{
dynamicRouters.push(
{
path : r['path'],
component : comsMap[r['component']],
name : r['name']
}
)
});
dynamicRouters.push(page404)
router.addRoutes(dynamicRouters)
}
paraseRouter(resData,router);
vue前后分离动态路由和权限管理方案的更多相关文章
- vue+iview实现动态路由和权限验证
github上关于vue动态添加路由的例子很多,本项目参考了部分项目后,在iview框架基础上完成了动态路由的动态添加和菜单刷新.为了帮助其他需要的朋友,现分享出实现逻辑,欢迎一起交流学习. Gith ...
- Vue | 自定义指令和动态路由实现权限控制
功能概述: 根据后端返回接口,实现路由动态显示 实现按钮(HTML元素)级别权限控制 涉及知识点: 路由守卫 Vuex使用 Vue自定义指令 导航守卫 前端工程采用Github开源项目Vue-elem ...
- 基于角色访问控制RBAC权限模型的动态资源访问权限管理实现
RBAC权限模型(Role-Based Access Control) 前面主要介绍了元数据管理和业务数据的处理,通常一个系统都会有多个用户,不同用户具有不同的权限,本文主要介绍基于RBAC动态权限管 ...
- vue后端返回路由表来进行权限管理,加载指定路由结构,不包含则不加载
创建vue项目,配置环境变量,后续需要用到.这里只配置生产环境和开发环境. 项目根目录创建 .env.production 文件 NODE_ENV=production VUE_APP_URL=htt ...
- vue系列之动态路由【原创】
开题 最近用vue来构建了一个小项目,由于项目是以iframe的形式嵌套在别的项目中的,所以对于登录的验证就比较的麻烦,索性后端大佬们基于现在的问题提出了解决的方案,在看到他们的解决方案之前,我先画了 ...
- [草稿]基于 Virtuoso 环境比较便捷的项目文件及权限管理方案
https://www.cnblogs.com/yeungchie/ 假设如下情况: 1 项目名称 Project_01 2 包含 4 名研发用户,user01 和 user02 为前端工程师,use ...
- Laravel5做权限管理
关于权限管理的思考 最近用laravel设计后台,后台需要有个权限管理.权限管理实质上分为两个部分,首先是认证,然后是权限.认证部分非常好做,就是管理员登录,记录session.这个laravel中也 ...
- Nuxt的动态路由及路由校验入门
其实动态路由就是带参数的路由.比如我们现在新闻模块下面有很多新闻详情页,这时候就需要动态路由的帮助了. 新闻详细页面我们在news文件夹下面新建了_id.vue的文件,以下划线为前缀的Vue文件就是动 ...
- 使用Laravel5做权限管理
https://www.imooc.com/article/18250 关于权限管理的思考 最近在用laravel设计后台,后台需要有个权限管理.权限管理实质上分为两个部分,首先是认证,然后是权限.认 ...
随机推荐
- Android上实现MVP模式的途径
今天我想分享我在Android上实现MVP(Model-View-Presenter)模式的方法.如果你对MVP模式还不熟悉,或者不了解为什么要在Android应用中使用MVP模式,推荐你先阅读这篇维 ...
- golang 学习笔记 ---数组/字符串/切片
数组 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成.数组的长度是数组类型的组成部分.因为数组的长度是数组类型的一个部分,不同长度或不同类型的数据组成的数组都是不同的类 ...
- java时区转化相关工具方法
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java. ...
- 【转载并整理】JAVA解析或生成xml的四种方法
参考文章 1:http://blog.csdn.net/clemontine/article/details/53011362 2:http://www.jb51.net/article/98456. ...
- C#基础第六天-作业答案-利用面向对象的思想去实现名片
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 《KAFKA官方文档》入门指南(转)
1.入门指南 1.1简介 Apache的Kafka™是一个分布式流平台(a distributed streaming platform).这到底意味着什么? 我们认为,一个流处理平台应该具有三个关键 ...
- chrome 版本 29.0.1547.76 m 解决打开新标签页后的恶心页面的问题
个人非常不喜欢这个版本的新标签页的样子,特别是一再输入框中输入要搜索的东西,自动跑到标题栏中去了,比吃屎还恶心.下面是解决办法: 在地址栏输入:chrome://flags/ 按Ctrl+F,输入下面 ...
- MySQL 示例数据库 employees 详解
[引子] IT这一行在我看来是比较要求动手能力的,但是人非生而知之:人们身上的技能除了一些本能之外,大多都是通过学习而得到的. 前一段时间一直在整理素材,写一个关于explain 的系列文章:在一开始 ...
- php分享二十七:批量插入mysql
一:思考 1:如果插入的某个字段大于数据库定义的长度了,数据库会怎么处理? 1>如果数据库引擎是myisam,则数据库会截断后插入,不报错 2>如果数据库引擎是innodb,则数据库会报 ...
- OAuth 2.0介绍
简介 OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 一.应用场景 为了理解OAuth的适用场合,让我举一个假设的例子. 有一个&q ...