我将SECRET_KEY放在secrets.json中,那个放在.gitignore中;在settings.py中,我从文件中读取了密钥。
底线:我的本地服务器正在读取密钥。但是,当我要生成git push heroku master
时,会引发错误,未找到文件。这是可以理解的!我将其添加到.gitignore。相应的问题是:该怎么办?为什么不能建议将SECRET_KEY隐藏在一个单独的git隐藏文件中,如果那样的话我们不能将更改直接推送到服务器?
我在这里看到这种方式:我可以在settings.py中显式注册我的密钥,将其推送到服务器上,再次将其隐藏在文件中,并将其推送到github存储库中。
但是它有多安全? SECRETS_KEY仅对公共存储库隐藏吗?
您正在正确处理机密,方法是不将这些机密未经加密地放入存储库中。要解决此问题,我通常要做的是在settings.py
中添加第二次检查if os.path.exists('secrets.json'):
# read secrets from json file
else:
SECRET_KEY = os.environ['DJANGO_SECRET_KEY']
并且在heroku中,您将用the value that you want using config vars设置具有该名称的环境变量。这样,您的秘密可用于heroku和本地,但不会放入您的存储库中。