【问题标题】:How to deploy a Dash app with dash_auth to Heroku through GitHub branch tracking?如何通过 GitHub 分支跟踪将带有 dash_auth 的 Dash 应用程序部署到 Heroku?
【发布时间】:2022-07-02 10:24:25
【问题描述】:

我正在使用 basic authentication dash_auth 构建一个 Dash 应用程序。不幸的是,这需要硬编码用户名和密码字典。这不是一个大问题,因为该应用仅供内部使用。

现在,我们希望通过自动跟踪 GitHub 存储库的一个分支来将其部署到 Heroku,因为这似乎最方便。问题是这需要我们将硬编码的密码也放入 Github 存储库中。

This post 建议对令牌和客户端密钥使用环境变量,但我应该如何为密码字典执行此操作?

我也对替代解决方案持开放态度。

【问题讨论】:

    标签: github heroku plotly-dash


    【解决方案1】:

    使用字典执行此操作时并没有真正改变。您只需要将 JSON 字符串解析为 Python 数据结构即可。

    在您的应用程序中,而不是像文档中显示的那样对字典进行硬编码:

    VALID_USERNAME_PASSWORD_PAIRS = {
        'hello': 'world'
    }
    

    从环境中提取它,例如像这样:

    import json
    import os
    
    
    VALID_USERNAME_PASSWORD_PAIRS = json.loads(os.getenv("VALID_USERNAME_PASSWORD_PAIRS"))
    

    然后将您的用户名设置为 Heroku config vars:

    heroku config:set VALID_USERNAME_PASSWORD_PAIRS='{"hello": "world"}'
    

    这里的单引号应该避免大多数特殊字符被你的shell解释的问题。

    对于本地开发,您可以设置 VALID_USERNAME_PASSWORD_PAIRS 环境变量,例如如果您使用的是能够理解这一点的工具,请通过 .env 文件。

    本地开发的另一种选择是通过添加 default 参数将默认值硬编码到脚本中:

    VALID_USERNAME_PASSWORD_PAIRS = json.loads(
        os.getenv("VALID_USERNAME_PASSWORD_PAIRS", default='{"local": "default"}')
    )
    

    注意我们在这里给default一个字符串,而不是一个字典,因为我们将结果传递给json.loads()

    请谨慎使用最后一个选项,因为您可能会在未设置环境变量的情况下意外发布代码,在这种情况下,本地默认凭据将起作用。

    【讨论】:

    • 非常感谢,这正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 2018-07-29
    • 2021-09-03
    • 2022-01-25
    • 2020-12-07
    • 2017-02-27
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多