若依角色修改后,角色列表查询为空问题

好的吧,刚准备发博客,突然发现若依已经进行优化,哈哈,白写博客了有点,当然这不影响2024年9月6号之前拉取若依代码的用户,能进来看,估计就是2024.9.6之前一批人了。

问题介绍

最近起初用若依低代码框架开发了一个小系统,但是在正式环境使用中,突然发现除了最高的那个admin账户,其他的账户修改了角色后,再次刷新发现是空数据。

修改前的显示
修改前的信息
修改后的显示
在这里插入图片描述

修改方案

将此处的代码执行顺序进行互换,问题得以解决,下面我将讲解具体原因。
在这里插入图片描述

问题原因

问题原因就是当前sql被进行了修改,增加了部门id为0的条件,当然这个部门为0是不存在。

1、查询接口上的注解

首先查询角色列表接口中,我们看到了包含了@DataScope(deptAlias = “d”)这处代码
这个是数据范围代码,当然进行这段代码首先是看你的权限,角色等信息。
在这里插入图片描述

2、注解的实现类

此时,我们就需要找到当前的注解的实现类
查看权限等,分情况对sql进行拼接
在这里插入图片描述

此处角色中的权限字符列表是空的
在这里插入图片描述

紧接着就会拼接一个不存在的部门,所以会查询列表为空
在这里插入图片描述

问题的根本

首先产生问题是因为我们修改了角色,然后导致查询结果为空。那么咱们就应该去看修改接口,它做了什么。
而真正的原因是因为,先对user用户下的role进行了权限字符的填充,而下一行的代码则是获取了当前用户的信息,将新的user对象重新赋值给了当前用户,那么也就是讲,你的role表中是没有字符权限的。代码的最后做了一个刷新token中用户信息的动作。

我们可以看到,是对角色修改后,我们重新进行用户的信息的获取,紧接着去刷新token
在这里插入图片描述

此时我们看到当前的用户,角色中的权限字符列表是包含有值的,同样咱们也注意一下用户表的地址信息和角色表的信息
在这里插入图片描述

此处还未改变,但是下一条就改变了
在这里插入图片描述
在这里插入图片描述

问题原因咱们已经找到了,就是这两行代码导致的,我们接下来就看看他做了什么
此时我们发现了,这个方法拿到角色表重新设置了权限字符
在这里插入图片描述

而在这个方法中,我们发现根据用户名或者用户,但此时的用户表是一个新的对象,被赋值给了当前用户。导致上面的代码被覆盖,做了无用功。
在这里插入图片描述

角色实体类中,是不包含权限字符的,是重新set的
在这里插入图片描述

若依的更改

在这里插入图片描述

好的,下班了,写这个博客耽误了我下班的时间,哈哈( •̀ ω •́ )✧( •̀ ω •́ )✧( •̀ ω •́ )✧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值