【发布时间】:2016-04-26 10:28:56
【问题描述】:
我正在尝试设置 Flask-Debugtoolbar,但我收到消息“DebugToolBar 需要 SECRET_KEY”。我从哪里获得密钥?
【问题讨论】:
我正在尝试设置 Flask-Debugtoolbar,但我收到消息“DebugToolBar 需要 SECRET_KEY”。我从哪里获得密钥?
【问题讨论】:
方法一:在 Python 2/3 中使用os:
>>> import os
>>> os.urandom(12)
'\xf0?a\x9a\\\xff\xd4;\x0c\xcbHi'
方法 2: 在 Python 2/3 中使用 uuid:
>>> import uuid
>>> uuid.uuid4().hex
'3d6f45a5fc12445dbac2f59c3b6c7cb1'
方法 3: 在 Python >= 3.6 中使用 secrets:
>>> import secrets
>>> secrets.token_urlsafe(16)
'Drmhze6EPcv0fN_81Bj-nA'
>>> secrets.token_hex(16)
'8f42a73054b1749f8f58848be5e6502c'
方法 4: 在 Python 3 中使用 os:
>>> import os
>>> os.urandom(12).hex()
'f3cfe9ed8fae309f02079dbf'
方法一:使用app.secret_key:
app.secret_key = 'the random string'
方法二:使用app.config:
app.config['SECRET_KEY'] = 'the random string'
方法 3: 放到你的配置文件中:
SECRET_KEY = 'the random string'
然后加载配置表单配置文件:
app.config.from_pyfile('config.py') # if your config file's name is config.py
【讨论】:
需要密钥来保证客户端会话的安全。您可以生成一些随机密钥,如下所示:
>>> import os
>>> os.urandom(24)
'\xfd{H\xe5<\x95\xf9\xe3\x96.5\xd1\x01O<!\xd5\xa2\xa0\x9fR"\xa1\xa8'
只需获取该密钥并将其复制/粘贴到您的配置文件中
SECRET_KEY = '\xfd{H\xe5<\x95\xf9\xe3\x96.5\xd1\x01O<!\xd5\xa2\xa0\x9fR"\xa1\xa8'
参见Sessions 文档
【讨论】:
import os; print(os.urandom(24).hex())
SECRET_KEY = os.urandom(24)吗?我相信这每次都会生成一个新密钥,但这会是个问题吗?
python -c "import os; print(os.urandom(24).hex())"
python -c "print(__import__('os').urandom(24).hex())"
为了在烧瓶中使用会话,您需要在应用程序设置中设置密钥。 密钥是一个随机密钥,用于加密您的 cookie 并将其保存发送到浏览器。
这个错误是因为this line in the Flask-Debugtoolbar code
要解决此问题,您只需在配置文件中设置SECRET_KEY。
app.config['SECRET_KEY'] = "Your_secret_string"
或者如果您有一个配置文件,只需将以下配置添加到它:
SECRET_KEY = "Your_secret_string"
【讨论】:
打开 Python,在你里面运行下面的代码
import secrets
secret_key = secrets.token_hex(16)
# example output, secret_key = 000d88cd9d90036ebdd237eb6b0db000
app.config['SECRET_KEY'] = secret_key
【讨论】: