【问题标题】:Assign AnonymousUserMixin to a real user将 AnonymousUserMixin 分配给真实用户
【发布时间】:2018-02-24 18:40:37
【问题描述】:

基本上,我想制作一个应用程序 (Superset),它被配置为使用 flask-login 进行身份验证工作,而无需任何身份验证。匿名用户已被分配/执行为AnonymousUserMixin,但应用程序的某些部分需要用户名和大概的 ID。

我的想法是在数据库中创建一个管理员用户,并以某种方式分配AnonymousUserMixin 始终等于该用户。我将如何做到这一点以及我希望在烧瓶登录或超集代码中的哪个位置做到这一点?

注意:进入此应用程序的身份验证已经得到处理,因此安全隐患没有实际意义。

提前谢谢你!

【问题讨论】:

    标签: python flask-login superset apache-superset


    【解决方案1】:

    Superset 使用 Flask-AppBuilder 作为底层 Web 框架。 Its configuration 包括:

    AUTH_TYPE = 0 | 1 | 2 | 3 | 4 这是认证类型

    • 0 = 打开 ID
    • 1 = 数据库样式(用户/密码)
    • 2 = LDAP,也使用 AUTH_LDAP_SERVER
    • 3 = 使用 web 服务器环境变量 REMOTE_USER
    • 4 = 使用一个或多个 OAUTH 提供者

    我们的兴趣是3。因为 Superset supports middleware 设置预定义用户就像(在 superset_config.py 中)一样简单:

    AUTH_TYPE = 3
    
    class PredefinedUserMiddleware:
    
        def __init__(self, app):
            self.app = app
    
        def __call__(self, environ, start_response):
            environ['REMOTE_USER'] = 'admin'
            return self.app(environ, start_response)
    
    ADDITIONAL_MIDDLEWARE = [PredefinedUserMiddleware]
    

    【讨论】:

    • 谢谢 - 这将把每个请求映射到数据库中 username "admin" 的用户?
    • @MarkSilverberg 是的,在我的简短实验中确实如此。 admin 是安装时创建的用户。试一试。
    猜你喜欢
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    相关资源
    最近更新 更多