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);
        }
    }
相关推荐
腾讯TNTWeb前端团队4 小时前
helux v5 发布了,像pinia一样优雅地管理你的react状态吧
前端·javascript·react.js
mghio6 小时前
Dubbo 中的集群容错
java·微服务·dubbo
范文杰8 小时前
AI 时代如何更高效开发前端组件?21st.dev 给了一种答案
前端·ai编程
拉不动的猪8 小时前
刷刷题50(常见的js数据通信与渲染问题)
前端·javascript·面试
拉不动的猪8 小时前
JS多线程Webworks中的几种实战场景演示
前端·javascript·面试
FreeCultureBoy9 小时前
macOS 命令行 原生挂载 webdav 方法
前端
uhakadotcom9 小时前
Astro 框架:快速构建内容驱动型网站的利器
前端·javascript·面试
uhakadotcom9 小时前
了解Nest.js和Next.js:如何选择合适的框架
前端·javascript·面试
uhakadotcom9 小时前
React与Next.js:基础知识及应用场景
前端·面试·github