昨天工作生产环境出现的一个问题分享分享。

问题:给用户添加多个角色导致该用户应用(权限)反而变少

情况一:测试用户添加单角色1,并且给改角色添加应用权限(正常)

情况二:给测试用户再加一个角色2,并且给新角色2添加应用权限(正常)(角色1(10个应用权限)+角色2(20个应用权限))

情况三:角色1+角色3(50个应用权限)(页面应用比单角色应用还少)

出问题是在客户那边生产环境出现的,为此我在我们这测试环境想要复测,但是一直复测不出来(客户生产环境那用的k8s,看日志也不方便,就想着在测试复现找问题。)

但是的情况就是给一个用户绑定多个角色就可能会出现这问题,但是我给一个用户绑定多个角色又不会出现问题,后面不断的绑定角色试,发现就只有两个角色绑定在一起就会出现问题,然后我又尝试将这两个角色混着绑定,并且我担心可能是给角色绑定的应用出的问题,所以我就一个一个的试一个一个的勾选,(因为这个应用权限就是菜单,只要选了该应用的一个菜单就有权限,既可以控制应用权限也可以控制菜单权限还有功能权限)。

最后猜到可能是字段超长了(逗号拼接的),但是回到数据库发现类型用的text 也不可能超长,因为已经找到了具体的位置所以第二天我就在测试服务器里加测试数据来复现,看日志果然,我单角色18个应用,再加一个角色反而变少了只有12个了,并且日志中打印的id,最后一个id被截断了。找到问题后我就回到本地调试找到了罪魁祸首 GROUP_CONCAT(mp.MENU_IDS),网上搜了搜mysql默认最大长度1024导致sql那就被截断了。

因为这应用的权限是从另外一个服务获取的数据,我从另外一个服务通过代码调用http获取数据然后再通过我这边的服务过滤。我还担心是我的问题,折腾了一天,最后是别的人问题就安心了。

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
老朽不性秀吉
下载 APP