关于vue-router当中addRoutes的使用
项目是越写越多,遇到的各种需求当然也逐渐增多。
在一个项目中,实现用户权限,似乎也成了必然。
一直以来,我也知道可以通过vue-router官方提供的一个api-->addRoutes可以实现路由添加的功能,事实上就也就实现了用户权限。
然而,看到官方文档的介绍,似乎也没办法理解怎么个用法。
官方介绍:
函数签名:
router.addRoutes(routes: Array<RouteConfig>)
动态添加更多的路由规则。参数必须是一个符合 routes 选项要求的数组。
就这么一句话,谁能跟我告诉我,我应该怎么用。
所以,一直也没有使用addRoutes来实现用户的鉴权。
近段时间,在整理项目中会常用的一些功能,认为有必要把用户鉴权[addRoutes]捡起来研究一下了。
真正的沉下心来研究的时候,其实也真没什么,似乎也就那么回事。怎么就拖了这么久了。。。
逻辑上,我们该怎么配置路由,还是怎么配置路由,唯一需要注意的地方在于,如果几条路由对用户权限有要求,那么就该稍微谨慎点了。
举个例子来说,系统上,一般情况下会有一个“用户管理”的模块,然而该模块并不需要对所有用户开放,仅仅具有“管理员”权限的用户才能看到该页面,并且进行操作。
那么,如果从源头上掐死,也就是确定是否配置该路由,那就直接确定下来用户是否能够看到该模块了。
基本上也就那么几种方法,常见的有:
export const asyncRoute = [
{
path: '/users',
name: 'Users',
component: () => import('@/views/Users'),
meta: {
title: '用户管理',
icon: 'user'
}
}
]
直接单独配置,然后确定用户是否拥有该权限,利用数组方法concat拼接到其他路由配置当中。
let rs = routes
if (+id === 1) { // id为1时,该用户拥有所有权限
rs = routes.concat(asyncRoute)
}
亦或者,在meta属性里面添加参数以确定是否需要鉴权:
[
{
path: '/home',
name: 'Home',
component: () => import('@/views/Home'),
meta: {
title: '首页',
icon: 's-home'
}
},
{
path: '/monitor',
name: 'Monitor',
component: () => import('@/views/Monitor/Ing'),
meta: {
title: '设备状态监测',
icon: 'monitor'
}
},
{
path: '/users',
name: 'Users',
component: () => import('@/views/Users'),
meta: {
title: '用户管理',
icon: 'user',
auth: true
}
}
]
比如这种,然后在页面当中利用数组方法filter进行过滤。拥有所有权限,就直接使用,如果没有用户管理的权限,那就过滤掉auth为true的选项。
const routes = [].filter(item => !item.meta.auth)
不管怎么判断,只要区分出具体的权限,剩下的就是官方文档的示例了:
Router.addRoutes([...routes])
这里写上解构,主要是为了强调,addRoutes的参数一定是一个数组,也就是我们在router.config.js文件中配置的数组,格式完全一样。
到这里基本上鉴权就完成了。
需要注意的是,在哪里实现鉴权,可以覆盖到所有组件的.vue文件当中,或者单独写一个peimission.js的文件,类似于vue-element-admin的做法。
一定不能仅仅是在点击“登录”按钮之后做鉴权,毕竟刷新页面也是常见操作。
关于vue-router当中addRoutes的使用的更多相关文章
- 深入浅出的webpack4构建工具---webpack+vue+router 按需加载页面(十五)
1. 为什么需要按需加载? 对于vue单页应用来讲,我们常见的做法把页面上所有的代码都打包到一个bundle.js文件内,但是随着项目越来越大,文件越来越多的情况下,那么bundle.js文件也会越来 ...
- Vue 2.0 + Vue Router + Vuex
用 Vue.js 2.x 与相配套的 Vue Router.Vuex 搭建了一个最基本的后台管理系统的骨架. 当然先要安装 node.js(包括了 npm).vue-cli 项目结构如图所示: ass ...
- vue router 只需要这么几步
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Vue.js 2.x笔记:路由Vue Router(6)
1. Vue Router简介与安装 1.1 Vue Router简介 Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,构建单页面应用. Vue Rout ...
- Vue Router学习笔记
前端的路由:一个地址对应一个组件 Vue Router中文文档 一.路由基本使用 第1步:导入Vue Router: <script src="https://unpkg.com/vu ...
- vue router.push(),router.replace(),router.go()和router.replace后需要返回两次的问题
转载:https://www.cnblogs.com/lwwen/p/7245083.html https://blog.csdn.net/qq_15385627/article/details/83 ...
- 前端MVC Vue2学习总结(八)——Vue Router路由、Vuex状态管理、Element-UI
一.Vue Router路由 二.Vuex状态管理 三.Element-UI Element-UI是饿了么前端团队推出的一款基于Vue.js 2.0 的桌面端UI框架,手机端有对应框架是 Mint U ...
- 深入浅出的webpack构建工具--webpack4+vue+router项目架构(十四)
阅读目录 一:vue-router是什么? 二:vue-router的实现原理 三:vue-router使用及代码配置 四:理解vue设置路由导航的两种方法. 五:理解动态路由和命名视图 六:理解嵌套 ...
- python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)
昨日内容回顾 0. 组件注意事项!!! data属性必须是一个函数! 1. 注册全局组件 Vue.component('组件名',{ template: `` }) var app = new Vue ...
随机推荐
- JAVA基础知识|小知识点
1.强烈建议,不使用char类型 那么,到底为什么java里不推荐使用char类型呢?其实,1个java的char字符并不完全等于一个unicode的字符.char采用的UCS-2编码,是一种淘汰的U ...
- 设置Win10默认启动的Linux子系统版本,启动指定Linux发行版
设置Win10默认启动的Linux子系统版本,启动指定Linux发行版 MS酋长一年前已经与大家分享了启用“适用于Linux的Windows子系统(WSL)”的方法,但当时所能安装的只有由Cano ...
- windows 10中的ubuntu子系统安装桌面环境的方法
windows 10中的ubuntu子系统安装桌面环境的方法 (How to install Ubuntu-desktop in windows 10 Subsystem for Linux) 转载 ...
- object_detection faster-rcnn
(t20190518) luo@luo-All-Series:~/MyFile/TensorflowProject/Faster_RCNN/models/research$ (t20190518) l ...
- 时间戳 Date.parse()和dateObject.getTime()的区别
一. Date.parse() parse() 方法可解析一个日期时间字符串,并返回 1970/1/1 午夜距离该日期时间的毫秒数. 解析: 1.parse() 方法为Date 对象的静态方法,一般采 ...
- Java NIO学习笔记五 FileChannel(文件通道)
Java NIO FileChannel Java NIO FileChannel是连接文件的通道.使用FileChannel,您可以从文件中读取数据和将数据写入文件.Java NIO FileCha ...
- Crontab的格式说明
第1列分钟1-59第2列小时1-23(0表示子夜)第3列日1-31第4列月1-12第5列星期0-6(0表示星期天)第6列要运行的命令 下面是crontab的格式:分 时 日 月 星期 要运行的命令 这 ...
- iOS——偏好设置的创建,数据写入与读取
NSUserDefaults与NSDictinary? 应用通过NSUserDefaults用键值对的方式来读取和保存偏好设置数据,与通过键从NSDictionary对象中获取数据一样,不同之处在于N ...
- Caché,Cache数据库下载
Caché数据库主要用于医疗领域,国内的开发人员比较少接触,使用环境相对封闭,前段时间刚才用到,下载也费了许多时间,特记录一下,帮助那些需要的人. 顺便说一下,TreeSoft数据库管理系统,目前支持 ...
- ssh自动添加hostkey到know_hosts
The authenticity of host ‘git.sws.com (10.42.1.88)’ can’t be established. ECDSA key fingerprint is 5 ...