统计分析

superset0.36嵌入后台应用

2020-06-16  本文已影响0人  Java全栈攻城狮

1. 修改配置文件

修改superset中的config.py配置文件,将PUBLIC_ROLE_LIKE_GAMMA改为True。

注释意思:

授予公共角色与GAMMA角色相同的权限集。

如果想让匿名用户查看,可以设置这里,在仪表盘对特定数据集的授权显示,也在这里设置。
image

2. 去掉X-Frame-Options限制

image
    避免iframe跨站访问问题。

3. 加入数据库权限这里加入所有数据库权限

image image

其中:

can explore on Superset为导出图表

can explore json on Superset为导出图表json

all database access on all_database_access访问所有数据库权限,也可以设置单个

4. iframe嵌入

image

5. iframe跨域集成时遇到难题

第一道墙

首先,认识一下 X-Frame-Options。
The X-Frame-Options HTTP 响应头是用来给浏览器 指示允许一个页面 可否在 <frame>, <iframe>, <embed> 或者 <object> 中展现的标记。站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免 clickjacking 攻击。

X-Frame-Options 有三个可能的值:

X-Frame-Options: deny # 表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
X-Frame-Options: sameorigin # 表示该页面可以在相同域名页面的 frame 中展示。
X-Frame-Options: allow-from https://www.baidu.com/ # 表示该页面可以在指定来源的 frame 中展示。

在0.27中保持这个配置项为空即可,在master中远远不够。

第二道墙

这么修改后可能还会遇到在打开iframe时出现错误

这里的原因可能是——开启public角色的访问权限后,真正放到iframe中还需要解决跨域问题,而老版本中对http_headers配置项的修改不起作用,只能直接对explore_json去除csrf保护。
添加配置文件中的👇

WTF_CSRF_EXEMPT_LIST = [
    "superset.views.core.explore_json"
    ]

再次访问有效,所以在master版本中,主要是依靠对特定接口取消保护来达到目的。

第三道墙

如果使用nginx进行部署的话,还需要配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 'http', 'server' 或者 'location' 的配置中:

add_header X-Frame-Options sameorigin always;

注意:

  1. 修改配置项http_headers为 {"X-Frame-Options": ""} 对授权无用,但对限制有用;

  2. 用户访问不在自己角色可能访问的数据,只是权限问题,可能报错:

上一篇下一篇

猜你喜欢

热点阅读