通过 GitHub 分支跟踪将带有 dash_auth 的 Dash 应用程序部署到 Heroku
Deploy Dash app with dash_auth to Heroku through GitHub branch tracking
我正在使用 basic authentication dash_auth 构建 Dash 应用程序。不幸的是,这需要对用户名和密码字典进行硬编码。这不是一个大问题,因为该应用程序仅供室内使用。
现在我们想通过自动跟踪 GitHub 存储库的一个分支来将其部署到 Heroku,因为这似乎最方便。问题是这需要我们将硬编码密码也放入 Github 存储库中。
建议对令牌和客户端密钥使用环境变量,但我应该如何对密码字典执行此操作?
我也愿意接受其他解决方案。
谢谢
使用字典执行此操作并没有真正改变。您只需要将 JSON 字符串解析为 Python 数据结构。
在您的应用程序中,而不是 hard-coding 文档中显示的字典:
VALID_USERNAME_PASSWORD_PAIRS = {
'hello': 'world'
}
从环境中提取,例如像这样:
import json
import os
VALID_USERNAME_PASSWORD_PAIRS = json.loads(os.getenv("VALID_USERNAME_PASSWORD_PAIRS"))
然后将您的用户名设置为 Heroku 配置变量:
heroku config:set VALID_USERNAME_PASSWORD_PAIRS='{"hello": "world"}'
此处的单引号应避免大多数特殊字符被您的 shell 解释的问题。
对于本地开发,您可以设置一个 VALID_USERNAME_PASSWORD_PAIRS
环境变量,例如通过 .env
文件,如果您使用的工具可以理解该文件。
本地开发的另一种选择是 hard-code 通过添加 default
参数将默认值添加到脚本中:
VALID_USERNAME_PASSWORD_PAIRS = json.loads(
os.getenv("VALID_USERNAME_PASSWORD_PAIRS", default='{"local": "default"}')
)
请注意,我们在这里给 default
一个 string,而不是字典,因为我们将结果传递给 json.loads()
。
请谨慎使用最后一个选项,因为您可能会在不设置环境变量的情况下意外发布代码,在这种情况下,本地默认凭据将起作用。
我正在使用 basic authentication dash_auth 构建 Dash 应用程序。不幸的是,这需要对用户名和密码字典进行硬编码。这不是一个大问题,因为该应用程序仅供室内使用。
现在我们想通过自动跟踪 GitHub 存储库的一个分支来将其部署到 Heroku,因为这似乎最方便。问题是这需要我们将硬编码密码也放入 Github 存储库中。
我也愿意接受其他解决方案。
谢谢
使用字典执行此操作并没有真正改变。您只需要将 JSON 字符串解析为 Python 数据结构。
在您的应用程序中,而不是 hard-coding 文档中显示的字典:
VALID_USERNAME_PASSWORD_PAIRS = {
'hello': 'world'
}
从环境中提取,例如像这样:
import json
import os
VALID_USERNAME_PASSWORD_PAIRS = json.loads(os.getenv("VALID_USERNAME_PASSWORD_PAIRS"))
然后将您的用户名设置为 Heroku 配置变量:
heroku config:set VALID_USERNAME_PASSWORD_PAIRS='{"hello": "world"}'
此处的单引号应避免大多数特殊字符被您的 shell 解释的问题。
对于本地开发,您可以设置一个 VALID_USERNAME_PASSWORD_PAIRS
环境变量,例如通过 .env
文件,如果您使用的工具可以理解该文件。
本地开发的另一种选择是 hard-code 通过添加 default
参数将默认值添加到脚本中:
VALID_USERNAME_PASSWORD_PAIRS = json.loads(
os.getenv("VALID_USERNAME_PASSWORD_PAIRS", default='{"local": "default"}')
)
请注意,我们在这里给 default
一个 string,而不是字典,因为我们将结果传递给 json.loads()
。
请谨慎使用最后一个选项,因为您可能会在不设置环境变量的情况下意外发布代码,在这种情况下,本地默认凭据将起作用。