Django秘密金钥产生

时间:2019-02-02 22:26:49

标签: django django-rest-framework

我想提出一个锅炉板的Django的后端,我需要能够使它到旁边的人谁下载就不能访问我的secrot关键明显,或有不同的一个。我一直在研究一些方案,并已成为在这一过程中实验。我尝试了以下方法:

from django.core.management.utils import get_random_secret_key 
SECRET_KEY = get_random_secret_key()

这似乎正在工作。我假设每次我运行python manage.py runserver时它都会生成一个新密钥。这对于生产环境将是一个问题吗?这确实是用于heroku部署的,是否有更好的方法应该通过公共回购来实现?我想我现在正在做的事情会破坏某些东西。

2 个答案:

答案 0 :(得分:2)

您猜对了,秘密密钥不应在每次运行时都更改。其他人应该手动创建自己的仓库,然后再提交回购协议。另一种方法是从环境变量中加载它,然后让他们将其密钥放在此处。

关于第二个问题-您需要做的唯一原因是破坏了密钥。根据文档:

密钥用于:

所有会话,如果您使用的是除django.contrib.sessions.backends.cache以外的任何其他会话后端,或者正在使用默认的get_session_auth_hash()。

如果使用CookieStorage或FallbackStorage,则显示所有消息。

所有PasswordResetView令牌。

任何使用加密签名的方式,除非提供了不同的密钥。

因此,更改它可能会注销所有用户,并使密码/重置链接无效。这不是您要定期执行的操作,但不是彻底的灾难。

答案 1 :(得分:0)

如何手动生成 Django 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