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

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

用户权限控制通常涉及以下几个方面:

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

此处只有不同用户返回不同的菜单,通过用户名判断(admin为超级管理员 其他为普通管理员)

Controller接收请求,然后调用对应的service接口,再具体实现类中实现(Result是一个封装类,在我的文章"2-token生成"有代码)

java 复制代码
@Override
    public 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);
        }
    }
相关推荐
张拭心2 小时前
Cursor 又偷偷更新,这个功能太实用:Visual Editor for Cursor Browser
前端·人工智能
I'm Jie2 小时前
深入了解 Vue 3 组件间通信机制
前端·javascript·vue.js
用户90443816324603 小时前
90%前端都踩过的JS内存黑洞:从《你不知道的JavaScript》解锁底层逻辑与避坑指南
前端·javascript·面试
CodeCraft Studio3 小时前
文档开发组件Aspose 25.12全新发布:多模块更新,继续强化文档、图像与演示处理能力
前端·.net·ppt·aspose·文档转换·word文档开发·文档开发api
DBA小马哥3 小时前
Oracle迁移实战:如何轻松跨越异构数据库的学习与技术壁垒
数据库·学习·oracle·信创·国产化平替
无敌最俊朗@4 小时前
STL-vector面试剖析(面试复习4)
java·面试·职场和发展
暮乘白帝过重山4 小时前
ArkTS ForEach 参数解析:组件与键值生成器
开发语言·数据库
PPPPickup4 小时前
easychat项目复盘---获取联系人列表,联系人详细,删除拉黑联系人
java·前端·javascript
老前端的功夫4 小时前
前端高可靠架构:医疗级Web应用的实时通信设计与实践
前端·javascript·vue.js·ubuntu·架构·前端框架
LiamTuc4 小时前
Java构造函数
java·开发语言