tds用户权限丢失修复

  内部使用
内容纲要

问题概述

为了避免越权问题,TDS 产品中的用户,无法赋予角色 “自己没有的权限”,同时用户又可以将自身角色的权限去掉(包括 admin),一旦误操作,导致所有角色都不具有某个组件的权限,就再也无法访问对应的组件。

本文提供一种直接操作元数据库的方式,恢复某个角色对应组件的权限

操作元数据库是敏感行为,在执行下列步骤之前,建议提前确认:
1、已经安装对应服务,依赖正常,启动正常
2、拥有对应服务的 license
3、没有手动关闭过一级、二级菜单显示

操作流程

连接 KunDB 元数据库,所有操作均在 Foundation 库中完成

查询表格
select * from t_role_info;

根据 name 分辨需要给哪个角色赋权,取 id 的值,本文选择系统管理员,id 为 1

file

继续查询表格
select * from t_module_info;

根据 name 分辨需要恢复哪个组件的权限,此处以 megaindex 为例,取组件的 id 为 10

file

继续查询表格,此处 id 即为上一步获取的 id 号
select * from t_menu_info where id = 10;

同样取 id 的值,此处为:71、72、73、74、105

file

最后,将权限插入表格 t_role_menu ,第一列为随机生成 UUID 的 md5 值,第二列为角色 id,第三列为菜单 id,其余置为 NULL
共 1 个角色 id,5 个菜单 id,故执行 1*5=5 条 sql 语句:

insert into t_role_menu (id, role_id, menu_id, create_user, create_time, update_user, update_time) values(md5(uuid()), '1', '71', NULL, NULL, NULL, NULL);

insert into t_role_menu (id, role_id, menu_id, create_user, create_time, update_user, update_time) values(md5(uuid()), '1', '72', NULL, NULL, NULL, NULL);

insert into t_role_menu (id, role_id, menu_id, create_user, create_time, update_user, update_time) values(md5(uuid()), '1', '73', NULL, NULL, NULL, NULL);

insert into t_role_menu (id, role_id, menu_id, create_user, create_time, update_user, update_time) values(md5(uuid()), '1', '74', NULL, NULL, NULL, NULL);

insert into t_role_menu (id, role_id, menu_id, create_user, create_time, update_user, update_time) values(md5(uuid()), '1', '105', NULL, NULL, NULL, NULL);

清理 Foundation 页面缓存并刷新,此时包含 “系统管理员” 角色的用户,例如 admin,已经可以正常赋予 “指标” 权限

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。