4-用户权限控制(后端)

在计算机系统中,用户权限控制是一种机制,用于限制用户对系统资源的访问和操作。它可以确保只有经过授权的用户可以执行特定的操作,并限制未经授权的用户的访问权限。
用户权限控制通常涉及以下几个方面:

  1. 用户认证:用户必须通过身份验证来证明自己的身份,通常使用用户名和密码进行认证。认证成功后,系统会分配一个特定的用户身份,用于后续的权限控制。
  2. 权限分配:系统管理员可以为每个用户分配特定的权限级别,以确定其可以访问和操作的资源。不同的权限级别通常对应不同的系统功能和操作。
  3. 访问控制列表(ACL):ACL是一种定义了特定资源的权限控制规则的列表。它可以指定哪些用户有权访问某个资源、以及对该资源的具体操作权限(读、写、执行等)。
  4. 角色权限控制:系统管理员可以为不同的用户定义不同的角色,并为每个角色分配特定的权限。这样,当用户被分配给某个角色后,其权限将自动继承该角色的权限。
    通过合理的用户权限控制,系统可以实现以下几个目标:
  5. 数据安全:限制未经授权的用户对敏感数据的访问,防止数据泄露和滥用。
  6. 系统稳定性:限制用户对系统资源的操作,防止恶意用户对系统进行破坏或影响系统稳定性。
  7. 合规性:确保系统遵守相关法律法规和行业标准,保护用户隐私和数据安全。
    总之,用户权限控制是一项重要的安全措施,它可以帮助保护系统免受未经授权的访问和操作。在设计和实施用户权限控制时,需要根据具体的需求和风险评估,合理分配用户的权限,并定期审查和更新权限设置。

此处只有不同用户返回不同的菜单,通过用户名判断(admin为超级管理员 其他为普通管理员)
Controller接收请求,然后调用对应的service接口,再具体实现类中实现(Result是一个封装类,在我的文章“2-token生成”有代码)

@Overridepublic Result getMenuByUsername(String username) {
//        System.out.println(username);if(username.equals("admin")) {
//            System.out.println("执行");Map data1 = new HashMap();data1.put("path", "/");data1.put("name", "home");data1.put("label", "首页");data1.put("icon", "s-home");data1.put("url", "Home/Home");Map data2 = new HashMap();data2.put("label", "患者管理");data2.put("icon", "s-grid");Map data23 = new HashMap();data23.put("path", "/patient/page1");data23.put("name", "patient/page1");data23.put("label", "患者信息管理");data23.put("icon", "setting");data23.put("url", "Patient/PageOne");Map data24 = new HashMap();data24.put("path", "/patient/page2");data24.put("name", "patient/page2");data24.put("label", "患者预约记录管理");data24.put("icon", "setting");data24.put("url", "Patient/PageTwo");List list2 = new ArrayList();list2.add(data23);list2.add(data24);data2.put("children", list2);Map data3 = new HashMap();data3.put("label", "医生管理");data3.put("icon", "s-grid");Map data33 = new HashMap();data33.put("path", "/doctor/page1");data33.put("name", "doctor-page1");data33.put("label", "医生信息管理");data33.put("icon", "setting");data33.put("url", "Doctor/PageOne");Map data34 = new HashMap();data34.put("path", "/doctor/page2");data34.put("name", "doctor-page2");data34.put("label", "医生排班管理");data34.put("icon", "setting");data34.put("url", "Doctor/PageTwo");List list3 = new ArrayList();list3.add(data33);list3.add(data34);data3.put("children", list3);Map data4 = new HashMap();data4.put("label", "科室管理");data4.put("icon", "s-grid");Map data43 = new HashMap();data43.put("path", "/department/page1");data43.put("name", "department/page1");data43.put("label", "科室信息管理");data43.put("icon", "setting");data43.put("url", "Department/PageOne");Map data44 = new HashMap();data44.put("path", "/department/page2");data44.put("name", "department/page2");data44.put("label", "科室评价管理");data44.put("icon", "setting");data44.put("url", "Department/PageTwo");List list4 = new ArrayList();list4.add(data43);list4.add(data44);data4.put("children", list4);Map data5 = new HashMap();data5.put("label", "系统设置");data5.put("icon", "setting");Map data53 = new HashMap();data53.put("path", "/set/page1");data53.put("name", "set/page1");data53.put("label", "用户权限管理");data53.put("icon", "setting");data53.put("url", "Set/PageOne");Map data54 = new HashMap();data54.put("path", "/set/page2");data54.put("name", "/set/page2");data54.put("label", "系统日志查看");data54.put("icon", "setting");data54.put("url", "Set/PageTwo");List list5 = new ArrayList();list5.add(data53);list5.add(data54);data5.put("children", list5);List<Map> list = new ArrayList<>();list.add(data1);list.add(data2);list.add(data3);list.add(data4);list.add(data5);return Result.ok(list);}else{System.out.println(username);Map data1 = new HashMap();data1.put("path", "/");data1.put("name", "home");data1.put("label", "首页");data1.put("icon", "s-home");data1.put("url", "Home/Home");Map data2 = new HashMap();data2.put("label", "患者管理");data2.put("icon", "s-grid");Map data23 = new HashMap();data23.put("path", "/patient/page1");data23.put("name", "patient/page1");data23.put("label", "患者信息管理");data23.put("icon", "setting");data23.put("url", "Patient/PageOne");Map data24 = new HashMap();data24.put("path", "/patient/page2");data24.put("name", "patient/page2");data24.put("label", "患者预约记录管理");data24.put("icon", "setting");data24.put("url", "Patient/PageTwo");List list2 = new ArrayList();list2.add(data23);list2.add(data24);data2.put("children", list2);Map data3 = new HashMap();data3.put("label", "医生管理");data3.put("icon", "s-grid");Map data33 = new HashMap();data33.put("path", "/doctor/page1");data33.put("name", "doctor-page1");data33.put("label", "医生信息管理");data33.put("icon", "setting");data33.put("url", "Doctor/PageOne");Map data34 = new HashMap();data34.put("path", "/doctor/page2");data34.put("name", "doctor-page2");data34.put("label", "医生排班管理");data34.put("icon", "setting");data34.put("url", "Doctor/PageTwo");List list3 = new ArrayList();list3.add(data33);list3.add(data34);data3.put("children", list3);Map data4 = new HashMap();data4.put("label", "科室管理");data4.put("icon", "s-grid");Map data43 = new HashMap();data43.put("path", "/department/page1");data43.put("name", "department/page1");data43.put("label", "科室信息管理");data43.put("icon", "setting");data43.put("url", "Department/PageOne");Map data44 = new HashMap();data44.put("path", "/department/page1");data44.put("name", "department/page1");data44.put("label", "科室评价管理");data44.put("icon", "setting");data44.put("url", "Department/PageT");List list4 = new ArrayList();list4.add(data43);list4.add(data44);data4.put("children", list4);List<Map> list = new ArrayList<>();list.add(data1);list.add(data2);list.add(data3);list.add(data4);return Result.ok(list);}}

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

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

相关文章

JAVA实现easyExcel批量导入

注解类型描述ExcelProperty导入指定当前字段对应excel中的那一列。可以根据名字或者Index去匹配。当然也可以不写&#xff0c;默认第一个字段就是index0&#xff0c;以此类推。千万注意&#xff0c;要么全部不写&#xff0c;要么全部用index&#xff0c;要么全部用名字去匹配。…

个人电脑本地部署LLM

普通电脑配置即可本地运行大模型&#xff0c;本地部署LLM最简单的方法 OLLAMA Ollama是一个开源框架&#xff0c;专门设计用于在本地运行大型语言模型&#xff08;LLM&#xff09;。它的主要功能是在Docker容器中部署和管理LLM&#xff0c;使得在本地运行大模型的过程变得非常…

python之List列表

1. 高级数据类型 Python中的数据类型可以分为&#xff1a;数字型&#xff08;基本数据类型&#xff09;和非数字型&#xff08;高级数据类型&#xff09; 数字型包含&#xff1a;整型int、浮点型float、布尔型bool、复数型complex 非数字型包含&#xff1a;字符串str、列表l…

CPPTest实例分析(C++ Test)

1 概述 CppTest是一个可移植、功能强大但简单的单元测试框架&#xff0c;用于处理C中的自动化测试。重点在于可用性和可扩展性。支持多种输出格式&#xff0c;并且可以轻松添加新的输出格式。 CppTest下载地址&#xff1a;下载地址1  下载地址2 下面结合实例分析下CppTest如…

Vue3+ts(day03:ref和reactive)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学&#xff0c;可以点心心支持一下哈&#xff08;笔记是根据b站上学习的尚硅谷的前端视频【张天禹老师】&#xff0c;记录一下学习笔记&#xff0c;用于自己复盘&#xff0c;有需要学…

ARCGIS PRO3 三维模型OSGB转SLPK场景数据集

1.前言 因项目工作&#xff0c;需要将三维模型发布到arcgisserver上&#xff0c;但arcgisserver只支持slpk格式的模型&#xff0c;于是我开启了漫长的三维模型格式转换之旅&#xff0c;在这里记录下本人踩过的坑。 2.三维模型数据情况 2.1 模型大小&#xff1a;在20GB以上&a…

tcp inflight 守恒算法的自动收敛

inflight 守恒算法看起来只描述理想情况&#xff0c;现实很难满足&#xff0c;是这样吗&#xff1f; 从 reno 到 bbr&#xff0c;无论哪个算法都在描述理想情况&#xff0c;以 reno 和 bbr 两个极端为例&#xff0c;它们分别描述两种理想管道&#xff0c;reno 将 buffer 从恰好…

goroutinue和channel

goroutinue和channel 需求传统方式实现goroutinue进程和线程说明并发和并行go协程和go主线程MPG设置Go运行的cpu数 channel(管道)-看个需求使用互斥锁、写锁channel 实现 使用select可以解决从管道取数据的阻塞问题&#xff08;无需手动关闭channel了&#xff09;goroutinue中使…

61、回溯-分割回文串

思路&#xff1a; 还是全排列的思路&#xff0c;列出每一种组合&#xff0c;然后验证是否是回文&#xff0c;如果是子串放入path中&#xff0c;在验证其他元素是否也是回文。代码如下&#xff1a; class Solution {// 主方法&#xff0c;用于接收一个字符串s并返回所有可能的…

智能变频三模正弦波控制器

智能变频三模正弦波控制器 前言一、图片介绍总结 前言 不敢动&#xff0c;完全不敢动。多做笔记&#xff0c;完全了解之后再说吧 一、图片介绍 轮毂电机 主角登场 淘宝关于这款控制器的介绍 当然不同的型号功能不同 学习线插上就会转,可以使用继电器控制通断。 电门…

mac资源库的东西可以删除吗?提升Mac运行速度秘籍 Mac实用软件

很多小伙伴在使用mac电脑处理工作的时候&#xff0c;就会很疑惑&#xff0c;电脑的运行速度怎么越来越慢&#xff0c;就想着通过删除mac资源库的东西&#xff0c;那么mac资源库的东西可以删除吗&#xff1f;删除了会不会造成电脑故障呢&#xff1f; 首先&#xff0c;mac资源库…

解决ax = Axes3D(fig2)pycharm画3d图空白不显示问题

明明代码运行正确&#xff0c;却总是显示不出来 绘制出来的也是空白 改一下代码就好了 ax Axes3D(fig2) #原来代码 ax fig2.add_axes(Axes3D(fig2)) #改后代码 修改过后就可以显示了

深入了解MySQL:从基础到特性,全面解读关系数据库管理系统的历史与应用

文章目录 1. MySQL简介1.1 概述1.2 架构与兼容性1.3 开源与社区支持 2. MySQL的历史2.1 创始与初衷2.2 发展历程2.3 在Oracle的持续发展2.4 开源与商业结合 3. MySQL的核心特性4. MySQL在实际应用中的作用4.1 网站建设与内容管理4.2 商业智能与客户关系管理4.3 企业级应用与云集…

线性代数 --- 计算斐波那契数列第n项的快速算法(矩阵的n次幂)

计算斐波那契数列第n项的快速算法(矩阵的n次幂) The n-th term of Fibonacci Numbers&#xff1a; 斐波那契数列的是一个古老而又经典的数学数列&#xff0c;距今已经有800多年了。关于斐波那契数列的计算方法不难&#xff0c;只是当我们希望快速求出其数列中的第100&#xff0…

mysql8.0免安装版windows

1.下载 MySQL下载链接 2.解压与新建my.ini文件 解压的路径最好不要有中文路径在\mysql-8.0.36-winx64文件夹下新建my.ini文件&#xff0c;不建data文件夹(会自动生成) [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录(尽量用双斜杠\\,单斜杠\可能会报错) basedirD:\…

uniapp获取当前位置及检测授权状态

uniapp获取当前位置及检测授权定位权限 文章目录 uniapp获取当前位置及检测授权定位权限效果图创建js文件permission.jslocation.js 使用 效果图 Android设备 点击 “设置”&#xff0c;跳转应用信息&#xff0c;打开“权限即可”&#xff1b; 创建js文件 permission.js 新建…

3d合并的模型为什么没有模型---模大狮模型网

在3D建模中&#xff0c;合并模型是常见的操作&#xff0c;它可以将多个模型合并成一个整体。然而&#xff0c;有时候在合并后却发现部分模型消失了&#xff0c;这可能会让人感到困惑和失望。本文将探讨为什么合并的3D模型中会出现没有模型的情况&#xff0c;并提供一些解决方法…

Web前端一套全部清晰 ③ day2 HTML 标签综合案例

别让平淡生活&#xff0c;耗尽所有向往 —— 24.4.26 综合案例 —— 一切都会好的 网页制作思路&#xff1a;从上到下&#xff0c;先整体到局部&#xff0c;逐步分析制作 分析内容 ——> 写代码 ——>保存——>刷新浏览器&#xff0c;看效果 <!DOCTYPE html> &l…

ubuntu22 部署fastDFS单节点和集群,整合Spring Boot(刚部署成功)

ubuntu22 部署fastDFS单节点和集群 一、先准备1、所需依赖安装2、下载安装包 二、安装FastDFS单节点1、libfastcommon安装1.1、创建软连接 2、安装fastDFS2.1、fastDFS目录简单介绍2.2、创建软连接 3、配置和启动Tracker服务3.1、修改Tracker配置文件3.2、启动Tracker 4、配置和…

【笔试强训】除2!

登录—专业IT笔试面试备考平台_牛客网牛客网是互联网求职神器&#xff0c;C、Java、前端、产品、运营技能学习/备考/求职题库&#xff0c;在线进行百度阿里腾讯网易等互联网名企笔试面试模拟考试练习,和牛人一起讨论经典试题,全面提升你的技术能力https://ac.nowcoder.com/acm/…