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

ops/2024/11/9 16:45:52/

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

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

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

java">@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.ppmy.cn/ops/18438.html

相关文章

Flutter应用下拉菜单设计DropdownButtonFormField控件介绍

文章目录 DropdownButtonFormField介绍使用方法重点代码说明属性解释 注意事项 DropdownButtonFormField介绍 Flutter 中的 DropdownButtonFormField 是一个用于在表单中选择下拉菜单的控件。它是 DropdownButton 和 TextFormField 的组合&#xff0c;允许用户从一组选项中选择…

Bytebase 2.16.0 - 支持 Oracle 和 SQL Server DML 变更的事前备份

&#x1f680; 新功能 支持 Oracle 和 SQL Server DML 变更的事前备份。 支持在 SQL 编辑器中显示存储过程和函数。 支持兼容 TDSQL 的 MySQL 和 PostgreSQL 版本。 支持把数据库密码存储在 AWS Secrets Manager 和 GCP Secret Manager。 支持通过 IAM 连接到 Google Clou…

某赛通电子文档安全管理系统 多处 SQL注入漏洞复现

0x01 产品简介 某赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护,系统具有透明加密、主动加密、智能…

机器学习之sklearn基础教程

Sklearn是一个基于Python的开源机器学习库&#xff0c;它具有简单易用、功能强大的特点&#xff0c;广泛应用于数据挖掘、数据分析以及数据科学领域。本篇博客将为您介绍Sklearn的基础知识&#xff0c;帮助您快速上手Sklearn。 1. 安装Sklearn 首先&#xff0c;确保您的计算机…

【TDengine】mac m1解决no taos in java.library.path

前言 使用macos搭建springbootmybatisplus&#xff0c;通过mqtt将数据更新到tdenigne 3.2.3&#xff0c;数据源使用远程服务器的tdengine。 问题 启动时报错&#xff1a; Caused by: java.lang.UnsatisfiedLinkError: no taos in java.library.path 以下是官方文档 打开本…

【R语言】热力图

热力图是一种可视化数据的方法&#xff0c;通常用于显示矩阵或网格数据的模式和趋势。它的主要特点是使用颜色来表示数据的数值大小&#xff0c;从而让观察者可以直观地理解数据的分布情况。 在一个热力图中&#xff0c;数据被组织成一个二维的矩阵&#xff0c;每个单元格代表一…

更易使用,OceanBase开发者工具 ODC 4.2.4 版本升级

亲爱的朋友们&#xff0c;大家好&#xff01;我们的ODC&#xff08;OceanBase Developer Center &#xff09;再次迎来了重要的升级V 4.2.4&#xff0c;这次我们诚意满满&#xff0c;从五个方面为大家精心打造了一个更加易用、贴心&#xff0c;且功能更强的新版本&#xff0c;相…

Jsoup爬虫

1 Jsoup简介 Jsoup是一个Java库&#xff0c;它简化了使用真实世界的HTML和XML。它提供了一个易于使用的API&#xff0c;用于使用DOM API方法、CSS和xpath选择器进行URL获取、数据解析、提取和操作。 Jsoup实现了WHATWG HTML5规范&#xff0c;并将HTML解析为与现代浏览器相同的D…