一、导致菜单/产品线丢失有如下几个场景

1.在应用市场安装app的时候,不管前端还是后端,同时安装多个容器的app; 2.应用市场安装app本身存在问题安装失败导致; 3.app卸载后,再重新安装,会导致ui_menu中菜单的delete_flag标志置为1,导致该菜单不会被加载; 4.在已安装应用点击更新的时候,容器重新过程中权限点丢失; 5.某一个容器重启,另外一个容器不重启; 6.每个容器的镜像版本不一样;

二、产品线,菜单丢失和恢复思路

1.点击刷新权限,看一下有没有效果; 2.查看tenant_function_auth表,是否已经授权; 3.查看tenant_permission表,是否有对应的权限点,以及权限点是否正确;

如果上面不能解决问题,就先启动主容器然后挨个重启容器;

三 如果上面不能解决问题,就先挨个重启容器;

四 如果上面步骤依然不能解决问题,执行以下步骤:

1.delete from tenant_permission where app_name = '' and code like 'function%'; 2.点击刷新权限或重启容器; 3.检查对应app的权限点是否生成; 4.然后重新授权或先取消授权再点击重新授权;

五 rbac_user_prefer表, CURROLELIST被错误的设置为null,导致角色丢失, 也会导致菜单丢失.

问题描述 租户管理员角色账户密码过期了,用户尝试去解锁账户,解锁完账户后,重新登录之后,发现页面一个菜单都不显示.

根本原因 Debug 发现,loadMenu接口调用时,meta.getRoleList()为NULL,定位到用户的角色没有正确设置.因为角色是从session获取的, 然后查看rbac_user_prefer表,发现当前角色的CURROLELIST为空,导致用户的角色丢失.所以查询不到菜单.

rbac_user_prefer 表, CURROLELIST被错误的设置为null 也会导致菜单丢失.

解决方式

  1. 由于rbac_user_prefer表 sign_content 设置为null,这个错误导致下次登记就不会更新sg和 role,后续登录还是报错。但新建一个用户由于设置成正确的,所以新用户可以登录和显示菜单。
  2. 先查询到该用户的角色列表,修改rbac_user_prefer表中的CURROLELIST设置为["roleId1","roleId2"],重新登录,菜单正确显示.