在阅读exploringflask.com时,我了解到最佳实践是使用两个不同的配置文件,一个用于开发,一个用于生产。我不知道是否将密钥放置在开发或生产配置中。
实例文件夹的私有性质使其非常适合用于定义不想在版本控制中公开的键。这些可能包括您应用的秘密密钥或第三方API密钥。
我认为不应共享密钥。我应该将密钥放入开发配置或生产配置中,还是应该为每个配置使用不同的密钥?
将密钥放置在开发配置中,该配置将提交给存储库。这对于开发人员很方便,因为他们不必生成一个就可以开始运行该应用程序。在生产环境中,请使用具有唯一密钥的生产环境配置(永远不会提交给存储库)。生产配置应覆盖开发配置。
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')