使用 Apache Superset 启用自定义错误页面(例如 404)的最佳方法是啥?

Posted

技术标签:

【中文标题】使用 Apache Superset 启用自定义错误页面(例如 404)的最佳方法是啥?【英文标题】:What is the best way to enable a custom error page (e. g., 404) with Apache Superset?使用 Apache Superset 启用自定义错误页面(例如 404)的最佳方法是什么? 【发布时间】:2021-09-19 04:37:32 【问题描述】:

我们有一个 Superset 实例,这是一个非常棒的工具,在最近一次安全更改之后,用户通过堆栈跟踪获得了 500:

  File "/opt/superset/venv/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "/opt/superset/venv/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/opt/superset/venv/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/opt/superset/venv/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/opt/superset/venv/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/opt/superset/venv/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/opt/superset/venv/lib/python3.8/site-packages/fab_oidc/views.py", line 48, in login
    return handle_login()
  File "/opt/superset/venv/lib/python3.8/site-packages/flask_oidc/__init__.py", line 487, in decorated
    return view_func(*args, **kwargs)
  File "/opt/superset/venv/lib/python3.8/site-packages/fab_oidc/views.py", line 45, in handle_login
    login_user(user, remember=False)
  File "/opt/superset/venv/lib/python3.8/site-packages/flask_login/utils.py", line 158, in login_user
    if not force and not user.is_active:
AttributeError: 'bool' object has no attribute 'is_active'

我知道为什么会发生这种情况,而且用户根本没有堆栈跟踪是一个问题。我的第一个想法是在 apache 反向代理中实现自定义错误文档,但这不起作用。为常见错误(403、404、500)实现自定义错误页面的最佳方法是什么,以便客户端无法使用 Superset 获得错误的堆栈跟踪?

谢谢!

【问题讨论】:

【参考方案1】:

你可以使用

  return self.response_500(message=str(error))

更改这似乎是您的错误原因的行

 user.is_active:

current_user.active

【讨论】:

以上是关于使用 Apache Superset 启用自定义错误页面(例如 404)的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

将 KeyCloak(OpenID Connect) 与 Apache SuperSet 一起使用

环境篇:Superset

环境篇:Superset

win10下apache superset的使用

在 Superset 上启用 Impala 模拟

如何启用 CORS 的 Apache Web 服务器(包括预检和自定义标头)?