动态路由-基于vue-admin-template

基于 vue-admin-template的动态路由

1. 拆分静态路由与动态路由

静态路由----所有人都可以访问—首页/登录/404
动态路由–有权限的人才可以访问—组织/角色/员工/权限
在这里插入图片描述

2. 根据用户权限添加动态路由

  • 获取对应的权限标识(vuex中actions中把用户资料通过return
    进行返回,在页面鉴权中调用获取用户资料得方法时候可以获取到用户资料)
  • 筛选出动态路由
  • 添加到当前路由表
  • vuex的actons中把用户资料返回—拿权限标识
const actions = {// user loginasync loginFn(context, data) {const res = await login(data)context.commit('setUserToken', res.data)},async getUserInfo(context) {const res = await getUserInfo()console.log(res.data, 'UserInfo')// 把用户资料存储到vuexcontext.commit('setUserInfo', res.data)// 把用户资料返回  进行筛选return res.data},logout(context) {context.commit('removeUserToken')context.commit('setUserInfo', {})}
}
  • perssion.js 页面鉴权中,拿到权限标识去和所有的动态路由对象进行筛选匹配
  • 筛选 动态添加路由
  • 把路由信息存储到vuex
router.beforeEach(async(to, from, next) => {NProgress.start()// 有tokenif (store.getters.token) {if (to.path === '/login') {next('/dashboard')NProgress.done()} else {if (!store.getters.userId) {const { roles } = await store.dispatch('user/getUserInfo')// 用户标识  和 所有路由模块的name 筛选 匹配// 拿到用户标识 roles   拿到所有的路由模块  asyncRoutes// console.log(roles, 'roles')// 筛选  动态路由  通过addRoutes动态添加到路由表李const filterRoutes = asyncRoutes.filter(item => {console.log(item, 'item')return roles.menus.includes(item.name)})// 提交mutations,把筛选的动态路由存储到state中store.commit('user/setRoutes', filterRoutes)// console.log(filterRoutes, 'filterRoutes')// 动态添加到路由表router.addRoutes([...filterRoutes, { path: '*', redirect: '/404', hidden: true }])}next()}} else { // 没有tokenif (whiteList.includes(to.path)) {next()} else {next('/login')NProgress.done()}}
})
  • vuex
const getDefaultState = () => {return {token: getToken(),userInfo: {},routes: constantRoutes // 静态路由数组}
}const state = getDefaultState()const mutations = {setUserToken(state, token) {state.token = tokensetToken(token)},removeUserToken(state) {state.token = ''removeToken()},setUserInfo(state, userInfo) {state.userInfo = userInfo},setRoutes(state, newRoutes) {state.routes = [...constantRoutes, ...newRoutes] // 静态路由+动态路由}
}
  • 左侧菜单页面的数据要从vuex中读取
    layout/components/Sidebar/index.vue
    在这里插入图片描述

在这里插入图片描述

3. 退出登录重置路由

import { constantRoutes, resetRouter } from '@/router'
logout(context) {// 删除tokencontext.commit('removeUserToken')// 删除用户资料context.commit('setUserInfo', {})// 重置路由resetRouter()}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/802908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI创业项目:AI旅游规划定制师

在当前的旅游市场中,个性化旅游规划成为越来越多旅行者的需求。然而,现行的定制旅行服务主要依赖于人工定制师,这一模式面临着信息不透明、价格弹性大等挑战。定制师在客户与服务供应商之间掌握着信息差,依靠这一优势获得收益&…

代码算法训练营day14 | 理论基础、递归遍历

day14: 理论基础二叉树的分类:二叉树的种类:满二叉树完全二叉树二叉搜索树平衡二叉搜索树 二叉树的存储方式:链式存储顺序存储 二叉树的遍历方式:深度优先和广度优先遍历实现方式 二叉树的定义: 递归遍历递…

(学习日记)2024.04.11:UCOSIII第三十九节:软件定时器

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

Vue文档

Vue是什么?为什么要学习他 Vue是什么? Vue是前端优秀框架, 是一套用于构建用户界面的渐进式框架 为什么要学习Vue Vue是目前前端最火的框架之一Vue是目前企业技术栈中要求的知识点Vue可以提升开发体验Vue学习难度较低… Vue开发前的准备 安…

JavaScript PAT乙级题解 1057 数零壹

给定一串长度不超过 105 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有多少 0、多少 1。例如给定字符串 PAT (Basi…

Redis数据倾斜

Redis 数据倾斜问题通常出现在分布式 Redis 环境中,尤其是 Redis 集群环境。这意味着一部分节点承载了比其他节点更多的数据或者接收的请求更多,导致负载不均衡。数据倾斜可能会对性能和可扩展性造成影响。以下是一些解决数据倾斜的通用策略:…

分享 3 个实时人工智能图像生成工具

如果有人还需要开源人工智能技术快速发展的实例,那就是实时 Diffusion 。一年前,如果想分析单个单词对图像提示的影响,甚至尝试使用 Diffusion 模型替换视频中的面孔,需要两件事: 处理开源代码自建 WEB 应用程序 到 …

cexprtk:Python中的数学表达式解析和计算

1 安装 可以使用 pip 安装: pip install cexprtk 注意:安装需要安装兼容的 C 编译器。 2 用法 1)示例:计算一个简单的方程 计算算术表达式 (55) * 23 import cexprtk cexprtk.evaluate_expression("(55) * 23", {}…

springboot项目引入swagger

1.引入依赖 创建项目后&#xff0c;在 pom.xml 文件中引入 Swagger3 的相关依赖。回忆一下&#xff0c;我们集成 Swagger2 时&#xff0c;引入的依赖如下&#xff1a; <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2&…

2024智能计算、大数据应用与信息科学国际会议(ICBDAIS2024)

2024智能计算、大数据应用与信息科学国际会议(ICBDAIS2024) 会议简介 智能计算、大数据应用与信息科学之间存在相互依存、相互促进的关系。智能计算和大数据应用的发展离不开信息科学的支持和推动&#xff0c;而信息科学的发展又需要智能计算和大数据应用的不断拓展和应用。智…

Jmeter —— jmeter利用取样器中http发送请求

使用Jmeter发送HTTP请求 取样器是用来模拟用户操作&#xff0c;向服务器发送请求以及接收服务器的响应数 据的一类元件&#xff0c;其中HTTP请求取样器是用来模拟常用的http请求的 步骤如下&#xff1a; 步骤一&#xff1a;添加线程组 右击测试计划——添加——线程&#x…

如何制作exe文件第一步

目录 0.图片链接1.Welcome&#xff08;可跳过&#xff09;2.Project type--作用选择制作jar包的模式3.定义生成exe应用文件命名和输出地址4.配置执行信息4.1配置应用执行显示方式、安装名称、和显示图标4.2是否重定向日志文件&#xff08;根据需要进行选择&#xff09;4.3配置安…

人生建议——别怯

你的每一次胆怯&#xff0c;都是自我能量的“收缩”。 如果一害怕&#xff0c;就找地方躲。 那你永远要忍受恐惧带来的苦果。 成长&#xff0c;其实就是对恐惧的不断突破。 如果你什么都怯懦。 那就只能一直让自己待在角落。 遇到自己能解决的事情。 根本不用害怕。 遇…

Docker使用— Docker部署安装Nginx

Nginx简介 Nginx 是一款高性能的 web 服务器、反向代理服务器以及电子邮件&#xff08;IMAP/POP3/SMTP&#xff09;代理服务器&#xff0c;由俄罗斯开发者伊戈尔塞索耶夫&#xff08;Igor Sysoev&#xff09;编写&#xff0c;并在2004年10月4日发布了首个公开版本0.1.0。Nginx…

深入理解Linux veth虚拟网络设备:原理、应用与在容器化架构中的重要性

在Linux网络虚拟化领域&#xff0c;虚拟以太网设备&#xff08;veth&#xff09;扮演着至关重要的角色&#x1f310;。veth是一种特殊类型的网络设备&#xff0c;它在Linux内核中以成对的形式存在&#xff0c;允许两个网络命名空间之间的通信&#x1f517;。这篇文章将从多个维…

算法(二分查找)

1.给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。 注意&#xff1a;不允许使用任何内置指数函数和算符&#xff0c;例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1&#xf…

40.Python从入门到精通—Python3 JSON 数据解析 Python3 日期和时间 什么是时间元组? 获取当前时间 获取格式化的时间

40.Python从入门到精通—Python3 JSON 数据解析 Python3 日期和时间 什么是时间元组&#xff1f; 获取当前时间 获取格式化的时间 Python3 JSON 数据解析Python3 日期和时间什么是时间元组&#xff1f;获取当前时间获取格式化的时间 Python3 JSON 数据解析 Python3 中可以使用…

SD-WAN企业组网塑造智能网络

云桥通SD-WAN技术正在成为企业网络架构的主流选择&#xff0c;它通过智能管理和控制网络&#xff0c;为客户提供灵活、安全和高效的网络连接&#xff0c;以满足不断增长的业务需求。 云桥通SD-WAN为客户提供的业务能力&#xff1a; A. 提高网络性能 通过智能路由和负载均衡功…

note31:ORA600

感觉我这辈子都不会忘记这个错误码了 起因&#xff1a;某天晚上发现一个表没法插入数据&#xff0c;plsql报错&#xff1a;“表不存在”&#xff0c;试了各种命令&#xff0c;truncate、drop都不行。因为这张表是张不太影响业务的表&#xff0c;而且报错原因问了不少大佬&…

MuJoCo 入门教程(五)Python 绑定

系列文章目录 前言 本笔记本提供了使用本地 Python 绑定的 MuJoCo 物理入门教程。 版权声明 DeepMind Technologies Limited 2022 年版权所有。 根据 Apache License 2.0 版&#xff08;以下简称 "许可协议"&#xff09;授权&#xff1b;除非遵守许可协议&am…