vue前端权限控制设计

news2024/12/24 22:14:10

概述

vue前端和后端程序是分离开发的,既然是分离的,vue前端怎么进行用户权限控制呢?本文介绍vue前端权限控制的方法,包括后端接口访问权限、页面操作按钮的权限、菜单的查看权限和vue路由的访问权限。

后端接口的访问权限

后端接口的访问权限一般是由后端程序控制,前端只需要在每次访问接口的时候带上前端用户唯一身份标识,也就是常说的token就可以了。在用户登录成功的时候,将后端返回的token保存到浏览器的localStorage中。vue网络请求一般通过axios扩展访问,通过axios的请求拦截将localStorage中的token在每次请求的时候放到请求头中,让每次请求都携带用户唯一标识token。这个时候后端就可以根据token判断用户身份,达到此用户是否可以访问此接口的目的。如下图所示。

页面操作按钮的权限

页面操作按钮的权限一般是通过vue自定义指令控制页面按钮的显示隐藏实现。

后台返回用户拥有的权限名称

 

前台路由前置守卫中获取用户拥有的权限,并保存到pinia中。

 

 

定义权限自定义指令

 

 

 

添加权限工具函数

 

使用可以通过v-permission指令和isPermission函数进行前端是否有权限判断。

菜单的查看权限

菜单的查看权限是通过后端通过用户身份token,查询出后端为该用户配置的菜单,然后将后端的菜单数据显示到vue后台的菜单处。后端返回json格式的菜单数据,vue前端做菜单的显示,如下图所示。

后端数据

 

vue前端显示

 

菜单显示效果

 

路由的访问权限

路由访问权限的设计是通过路由守卫,在每次页面加载的时候,判断是否动态加载该用户可以查看到的路由页面,如果没有加载,则请求pinia(pinia中没有路由数据则请求后端接口,将数据存储到浏览器的存储中)将路由数据动态的添加到vue的vue-router路由布局中。根据后台的配置,如果是主布局则加入到主布局中,如果是空白布局就加入到路由顶层。注意:路由前台根据页面的显示进行前台,不能因为后台菜单的层级决定路由嵌套层级。例如:我这里设置的菜单是“系统后台 > 系统管理 > 用户管理”和“系统后台 > 首页”,路由是嵌套是“主布局 > 用户管理”和“主布局 > 首页”,注意这里首页和用户管理在菜单中不是同一层级,而在路由嵌套中首页和用户管理是同级,都是主布局(mainLayout)的childreen。文字有点不好理解,请看下面的代码截图(这一点,困扰我很久,终于看别人源码想明白的一点,特别说明一下,注意理一下与菜单的不同。有些程序员是将菜单数据和路由数据由后端一个接口返回,在前端分别处理,我这里为了流程更清晰,我后端接口分成了菜单数据接口和路由数据接口,毕竟这两个接口的意义和使用场景不一样)。

后台数据

 

vue前台

路由守卫动态添加用户权限范围内的路由。

 

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

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

相关文章

【服务器必备】Docker:使用容器技术,轻松部署应用

1、介绍 1.1 docker是什么?(来自于维基百科) Docker是一种流行的容器化技术,它能够帮助开发人员和运维人员更快、更轻松地部署和管理应用程序。通过使用Docker,您可以将应用程序及其依赖项打包到一个轻量级、可移植的…

spring系列-Spring Boot从初识到实战

Spring Boot从初识到实战 一、Hello Spring Boot 1、Spring Boot 简介 简化Spring应用开发的一个框架; 整个Spring技术栈的一个大整合; J2EE开发的一站式解决方案; 2、微服务 微服务:架构风格(服务微化) 一…

问你个问题,项目进度怎样控制才有效?

早上好,我是老原。 有多少项目经理,每天都被项目进度搞得焦头烂额。 对于项目经理们来说,最可怕的事情莫过于项目虽然还在,但时间却没了…… 试问谁不想把项目和进度都牢牢握在手里,享受运筹帷幄的感觉,…

多领域应用落地,火山引擎ByteHouse加速云数仓升级

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近日,火山引擎数智平台VeDI直播活动「超话数据」在线举办,来自火山引擎的产品及解决方案专家分享了以ByteHouse为代表的云数仓产品在字节跳动…

【设计模式】第十一章:享元模式详解及应用案例

系列文章 【设计模式】七大设计原则 【设计模式】第一章:单例模式 【设计模式】第二章:工厂模式 【设计模式】第三章:建造者模式 【设计模式】第四章:原型模式 【设计模式】第五章:适配器模式 【设计模式】第六章&…

每周学点数学 3:概率论基础2

文章目录 1.独立性与相关性2.条件概率与边缘概率3.大数定律与中心极限定理4.随机过程5.概率论的应用 1.独立性与相关性 独立性与相关性是在数据分析中非常重要的两个概念,它们之间存在一定的联系,但也有明显的区别。 独立性(Independence&…

CSS(持续更新!~)

二: 进阶: 只打算起到装饰作用的图片就建议就背景图片 块级标签就是:独占一行的标签(比如div)并且可以加宽加高 行内元素:就是不会独占一行的标签(比如a,span等等,不可以…

软件测试为什么要学习数据库

目录 前言: 一、为什么要学习数据库 二、常见数据库 三、如何学习数据库 前言: 数据库是用于存储、组织和管理数据的系统,它在各个领域都得到广泛应用,包括企业、学术界、政府和互联网等。 一、为什么要学习数据库 能够反作…

PS 快速选择工具基本操作讲解 通过 选择并遮住 调整后续

我们先打开PS软件 然后打开一个项目 前面几篇文章我们讲了磁性套索工具 其实就已经比较智能了 但是 毕竟拿东西还得自己去描边,操作起来并不是特别轻松 那么 我们今天看的东西就会更智能一些 我们将鼠标在下图指向位置右键 然后在弹出的选项中选择快速选择工具 选…

Notepad++ 打开单独窗口

应用1、打开完全独立的新窗口 快捷键:AltF6 应用2、打开新视图

CSDN 周赛 61 期

CSDN 周赛 60 期 参赛体验判断题单选题填空题编程题1、题目名称:最近的回文数2、题目名称:风险投资小结参赛体验 嗯,今天的填空题又出了新的幺蛾子,直接所有人不给分?看到 bug 提交去好多人在议论这问题。 这个未阅卷是个啥情况?机器人下班了,要改人工了? 然后,C 站…

小说系统源码分享,打造完整小说生态系统

小说已经成为了现代人娱乐生活的重要组成部分,而现在的小说不仅仅是纸质的,越来越多的人开始阅读网络小说。在这个数字化的时代,打造一个完整的小说生态系统变得尤为重要。本篇文章将为大家分享小说系统源码,帮助大家打造完整的小…

D盘不见了?3个方法,教你找回丢失的d盘!

谁能帮帮我呀!电脑使用的好好得,d盘突然就不见了。我还有很多很重要的文件都保存在里面呢!还有找回这些文件的希望吗? D盘作为电脑的一个重要磁盘,我们可能会将很多很重要的文件都保存在里面。但不知道大家有没有遇到过…

哈希与位图的结合--布隆过滤器与哈希切分

上一章讲了位图,我们知道了在海量数据中查找一个数是否存在,可以用每一个比特位标识。 但是位图只能处理整数,要是字符串或者其它的呢,位图便无法处理了,这个时候便需要用到布隆过滤器了. 目录 布隆过滤器提出 布隆…

斯坦福发布最新LLM排行榜AlpacaEval,微软WizardLM登顶开源模型第一

斯坦福发布最新LLM排行榜AlpacaEval,微软WizardLM登顶开源模型第一 文章目录 Part 1. 众多LLM排行榜Part 2. AlpacaEval 技术细节2.1 AlpacaEval 评估效果2.2 如何使用AlpacaEval评估模型 Part 3. 微软 WizardLM 登顶开源模型第一3.1 关于 WizadLM 与 Evol-Instruc…

PostgreSQL使用localhost可以连接,使用IP无法连接

问题描述:PostgreSQL使用localhost可以连接,使用IP无法连接 默认情况下,刚安装完成的 postgresSQL12 无法使用 数据库连接工具(如postman)连接。需要为其修改配置,开放连接权限。 修改pg_hba.conf 增加…

【js小案例】视频倍数播放、计算机、待办事项管理

视频倍数播放示例图&#xff1a; 视频倍数播放代码&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>控制视频播放速度</title> </head> <body><video id"myVideo" width&quo…

c语言内存

程序是保存在硬盘中的&#xff0c;要载入内存才能运行&#xff0c;CPU也被设计为只能从内存中读取数据和指令。 对于CPU来说&#xff0c;内存仅仅是一个存放指令和数据的地方&#xff0c;并不能在内存中完成计算功能&#xff0c; 如&#xff1a;计算abc,必须将a,b,c都读取到CPU…

解锁生成式AI万亿规模市场,亚马逊云科技有效降低AIGC门槛

ChatGPT一声惊雷&#xff0c;让全球见识到了生成式AI的威力。当前&#xff0c;生成式AI进入一个爆发时刻&#xff0c;并在许多领域中展现出它的无限潜力。那么&#xff0c;在这轮生成式AI大爆发中&#xff0c;企业应当如何抓住机遇&#xff0c;顺应这一波时代的潮水&#xff0c…

PHP:数据库中设置文本长度,通过js去限制前台文本长度。扩展:数据类型的限制

效果图 如上图&#xff1a;当测试111的长度超过数据库中限制的长度&#xff0c;进行提示&#xff0c;并且自动将多余部分截掉 HTML代码 <!-- 附加属性 --> <div class"text-nav-1 " id"append1"> <div >append1</div><input…