我想提出一个锅炉板的Django的后端,我需要能够使它到旁边的人谁下载就不能访问我的secrot关键明显,或有不同的一个。我一直在研究一些方案,并已成为在这一过程中实验。我尝试了以下方法:
from django.core.management.utils import get_random_secret_key
SECRET_KEY = get_random_secret_key()
这似乎正在工作。我假设每次我运行python manage.py runserver时它都会生成一个新密钥。这对于生产环境将是一个问题吗?这确实是用于heroku部署的,是否有更好的方法应该通过公共回购来实现?我想我现在正在做的事情会破坏某些东西。
答案 0 :(得分:2)
您猜对了,秘密密钥不应在每次运行时都更改。其他人应该手动创建自己的仓库,然后再提交回购协议。另一种方法是从环境变量中加载它,然后让他们将其密钥放在此处。
关于第二个问题-您需要做的唯一原因是破坏了密钥。根据文档:
密钥用于:
所有会话,如果您使用的是除django.contrib.sessions.backends.cache以外的任何其他会话后端,或者正在使用默认的get_session_auth_hash()。
如果使用CookieStorage或FallbackStorage,则显示所有消息。
所有PasswordResetView令牌。
任何使用加密签名的方式,除非提供了不同的密钥。
因此,更改它可能会注销所有用户,并使密码/重置链接无效。这不是您要定期执行的操作,但不是彻底的灾难。
答案 1 :(得分:0)
SECRET_KEY
:$ python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
7^t+3on^bca+t7@)w%2pedaf0m&$_gnne#^s4zk3a%4uu5ly86
import string
import secrets
c = string.ascii_letters + string.digits + string.punctuation
secret_key = ''.join(secrets.choice(c) for i in range(67))
print(secret_key)
df&)ok{ZL^6Up$\y2*">LqHx:D,_f_of#P,~}n&\zs*:y{OTU4CueQNrMz1UH*mhocD