Superset是否有内置API可绕过登录直接打开仪表盘?
Superset免登录直接访问仪表盘的实现方法
你之前操作跳转登录页的核心原因是:仅调用登录接口拿到令牌后,没有将令牌放入Superset可识别的请求上下文,浏览器直接访问仪表盘URL时默认不会携带你拿到的令牌,后端会判定为未登录状态,因此触发跳转。
目前有两种官方支持的可行实现方案:
方案1:使用官方内置访客令牌(Guest Token,推荐)
这是Superset专门为嵌入、免登访问场景设计的功能,不需要处理Cookie,安全性更高。
- 第一步:先开启嵌入功能配置,在
superset_config.py中添加配置项,修改后重启Superset服务FEATURE_FLAGS = {"EMBEDDED_SUPERSET": True} # 可按需调整访客令牌有效期,默认300秒 GUEST_TOKEN_JWT_EXP_SECONDS = 86400 - 第二步:调用登录接口获取管理员权限的接口调用凭证,请求地址为
POST /api/v1/security/login,请求头指定Content-Type: application/json,请求Body示例:
接口返回的{ "username": "你的管理员账号", "password": "你的管理员密码", "provider": "db", "refresh": true }access_token值,需要作为后续接口的身份凭证,放在请求头Authorization: Bearer <access_token>中。 - 第三步:调用
POST /api/v1/guest_token生成目标仪表盘的专属访客令牌,请求Body示例:{ "resources": [{"type": "dashboard", "id": "目标仪表盘ID"}], "rls": [], "user": {"username": "自定义访客名", "first_name": "自定义", "last_name": "自定义"} } - 第四步:访问仪表盘时,在URL后拼接参数
?guest_token=<你生成的访客令牌>,即可直接访问无需登录,嵌入iframe场景也可以用该拼接后的URL直接作为iframe的src属性值。
方案2:Cookie写入登录令牌(适合内部自用场景)
如果不需要嵌入,仅需要本地JS调用后直接访问,可以将登录拿到的令牌写入当前域名的Cookie中,Superset会自动读取该Cookie校验身份:
- 调用
POST /api/v1/security/login拿到access_token后,执行JS代码写入Cookie:document.cookie = `access_token=${你拿到的access_token}; path=/; SameSite=Lax`; - 写入完成后再访问仪表盘URL,就不会触发登录跳转。
- 注意:该方案需要自行处理令牌过期后的续期逻辑,默认access_token有效期较短。
内容的提问来源于stack exchange,提问作者Kokila Manikandan
相关产品推荐
相关产品推荐

