【Saas-export项目】17--动态菜单(不同用户登录权限->显示不同菜单)

本文详细介绍了在SaaS-export项目中如何根据用户权限动态显示菜单。通过分析不同用户等级与模块的关系,利用数据库查询获取用户权限,实现了在TestModuleService、IModuleService及其实现类ModuleServiceImpl中动态获取模块信息。最后在UserController和left_menu.jsp中展示动态菜单,确保不同用户登录后看到的菜单符合其权限范围。
摘要由CSDN通过智能技术生成



动态菜单分析

(1)分析

不同的用户进入主页,看到的左侧菜单是不同的
其实,根据用户等级与RBAC查询用户的权限

(2)等级与模块对应关系(user\degree)

在这里插入图片描述

  • degree=0
    在这里插入图片描述
  • degree=1
    在这里插入图片描述
  • degree=其他
    使用5张表来查询

sql语句查询不同用户的模块权限

#三种用户
# 平台管理员 -Sass菜单 degree==0
# 企业管理员 -除了Sass菜单之外的所有 degree==1
# 用户 查RBAC
select * from pe_user where degree=0;
# 0作为belong查模块表
select * from ss_module where belong=0
#查询企业管理员的用户
select * from pe_user where degree=1;  
select * from ss_module where belong=1

#查询不在0(SaaS管理员) 1(企业管理员)之间的所有用户,其他用户(非管理员)
select * from pe_user where degree not in(0,1);  

# 通过id查询普通用户的模块权限(查询RBAC五张表)
# 其实只需要连接3个表就可以查询数据,用户user查询角色包role,角色查模块,就可以获取到用的模块权限
# 先根据用户user表查有什么角色role,再根据role角色表查有什么模块module,用户角色表,角色模块表
# 显示内连接
# distinct 去重
select distinct m.* from 
pe_role_user ru 
inner join pe_role_module rm
on ru.role_id=rm.role_id
inner join ss_module m
on m.module_id=rm.module_id
where ru.user_id='0f1f71fe-fe7c-4a44-a952-4f08bf5aa990'
order by module_id asc;

动态菜单实现

(1)TestModuleService.java

src\test\java\com\smp\service\company

@Test
    public void test08(){
   
        User user=new User();
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值