【问题标题】:Where should I place the secret key in Flask?我应该将密钥放在 Flask 中的什么位置?
【发布时间】:2015-06-16 16:28:56
【问题描述】:

在阅读exploreflask.com 时,我了解到最好使用两个不同的配置文件,一个用于开发,一个用于生产。我不明白是否将密钥放在开发或生产配置中。

实例文件夹的私有性质使其成为定义您不希望在版本控制中公开的密钥的理想选择。这些可能包括您应用的密钥或第三方 API 密钥。

我想不应该共享密钥。我应该将密钥放在开发配置还是生产配置中,还是应该为每个配置使用不同的密钥?

【问题讨论】:

    标签: python flask


    【解决方案1】:

    在开发配置中放置一个密钥,该密钥将提交到 repo。这对开发人员来说很方便,因为他们不必生成一个即可开始运行应用程序。在生产中,使用具有唯一密钥的生产配置(从不提交给 repo)。生产配置应该覆盖开发配置。

    app = Flask(__name__, instance_relative_config=True)
    # default value during development
    app.secret_key = 'dev'
    # overridden if this file exists in the instance folder
    app.config.from_pyfile('config.py', silent=True)
    

    如果您无法在生产环境中添加私有文件,例如在 Heroku 上,另一种选择是使用环境变量。如果设置了变量,它将覆盖默认值。

    app.secret_key = os.environ.get('SECRET_KEY', 'dev')
    

    【讨论】:

      【解决方案2】:

      我在生产 config.py 中混合使用硬编码值和环境变量:

      import os
      
      
      class Config(object):
          SECRET_KEY = os.environ.get("SECRET_KEY")
          SQLALCHEMY_DATABASE_URI = os.environ.get("DB_PROD")
          SQLALCHEMY_TRACK_MODIFICATIONS = False
      

      在我的开发 config.py 中,所有内容都是硬编码的。

      【讨论】:

        猜你喜欢
        • 2019-03-18
        • 1970-01-01
        • 2010-12-04
        • 2022-11-17
        • 2012-07-22
        • 1970-01-01
        • 2012-11-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多