superset图表分享需要登录的问题

问题说明

superset中的chart和dashboard都可以提供短url在html页面进行直接访问,也可以在iframe中进行引用展示。
问题出现在当使用上述两种方式时页面会跳转至登录页面,提示你权限不够。

查了网上各种博客,官档,issue等等,说的都不是很明确,很多都是无效的答案,花了一上午终于解决了,必须记录下来。

解决思路

1、权限不够就需要赋予权限,找到需要赋权的对象
通过查看源代码可以发现这些访问都是通过public角色的;
2、角色权限

Admin:拥有所有权限;
Alpha:能访问所有数据源,增加或者更改数据源,但不能更改其他用户权限;
Gamma:必须结合其他能访问数据源的角色才能访问数据。这个角色所能访问的切片和看板,也是基于能访问数据源所创建的切片和看板;
sql_lab:能访问SQL Lab菜单;
Public:默认没有任何权限;

3、赋权
可以参照Gamma角色的权限一项项加入public中,但是实在这样太麻烦了,上百个不得加半天的;
找到superset后台代码中的config.py配置文件,其中有个配置"PUBLIC_ROLE_LIKE_GAMMA",将其改为True。
然后使用"python superset/bin/superset init" 初始化数据库角色权限,结束后可以看到Gamma的权限已经加入到public中了;

(tips:如果你的数据库不是初始化的,角色已经赋予了一些权限,不必担心会把这些设置清掉,init只会追加初始权限进角色,不会删除的。我也是中途进行的这项修改,已经帮你踩过坑了,所以放心大胆操作吧。)

	不相信?看manager.py中set_role中的代码,L664,merge
      role = self.add_role(role_name)
      role_pvms = [p for p in pvms if pvm_check(p)]
      role.permissions = role_pvms
      sesh.merge(role)
      sesh.commit()

现在还剩下一个操作需要,就是添加数据源访问权限,所以还需要加上下面这个权限:
all database access on all_database_access
这是访问所有数据库权限,你也可以根据需要单独指定数据源。

总结

上面废话多了点,如果懒的看就从这里开始吧
1、将config.py中的配置项 PUBLIC_ROLE_LIKE_GAMMA改成True
2、superset init 初始化
3、给public角色添加数据源权限

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值