我在哪里可获得Flask的SECRET_KEY?

Ten*_*ndi 35 python flask

我正在尝试设置Flask-Debugtoolbar,但是我收到消息"DebugToolBar需要SECRET_KEY".我从哪里获得密钥?

r-m*_*m-n 42

密钥是需要保持客户端会话安全.您可以生成一些随机密钥

>>> import os
>>> os.urandom(24)
'\xfd{H\xe5<\x95\xf9\xe3\x96.5\xd1\x01O<!\xd5\xa2\xa0\x9fR"\xa1\xa8'
Run Code Online (Sandbox Code Playgroud)

只需取出该密钥并将其复制/粘贴到配置文件中即可

SECRET_KEY = '\xfd{H\xe5<\x95\xf9\xe3\x96.5\xd1\x01O<!\xd5\xa2\xa0\x9fR"\xa1\xa8'
Run Code Online (Sandbox Code Playgroud)

请参阅会话文档

  • 在python 3中,如果您更喜欢普通字符串(例如,存储在JSON文件中),则可以转换为十六进制字符串:`import os; 打印(os.urandom(24)的.hex())` (12认同)
  • 对于像我这样非常懒的人,这里是 @Daniel Waltrips 行,您可以将其复制粘贴到命令行中: `python -c "import os; print(os.urandom(24).hex())"` (7认同)
  • 我的上述问题已在[此处]得到解答(/sf/ask/1910117401/)。 (5认同)
  • 你能做“SECRET_KEY = os.urandom(24)”吗?我相信这每次都会生成一个新密钥,但这会是一个问题吗? (3认同)

Gre*_* Li 24

获取密钥的随机字符串:

方法1:os在Python 2/3中使用:

>>> import os
>>> os.urandom(12)
'\xf0?a\x9a\\\xff\xd4;\x0c\xcbHi'
Run Code Online (Sandbox Code Playgroud)

方法2:uuid在Python 2/3中使用:

>>> import uuid
>>> uuid.uuid4().hex
'3d6f45a5fc12445dbac2f59c3b6c7cb1'
Run Code Online (Sandbox Code Playgroud)

方法3:使用secrets在Python> = 3.6:

>>> import secrets
>>> secrets.token_urlsafe(16)
'Drmhze6EPcv0fN_81Bj-nA'
Run Code Online (Sandbox Code Playgroud)

方法4:os在Python 3中使用:

>>> import os
>>> os.urandom(12).hex()
'f3cfe9ed8fae309f02079dbf'
Run Code Online (Sandbox Code Playgroud)

在Flask中设置密钥

方法1:使用app.secret_key

app.secret_key = 'the random string'
Run Code Online (Sandbox Code Playgroud)

方法2:使用app.config

app.config['SECRET_KEY'] = 'the random string'    
Run Code Online (Sandbox Code Playgroud)

方法3:将其放在您的配置文件中:

SECRET_KEY = 'the random string'
Run Code Online (Sandbox Code Playgroud)

  • 它用于您的应用程序,而不是用户。 (2认同)

itm*_*ard 7

要在flask中使用会话,您需要在应用程序设置中设置密钥.密钥是一个随机密钥,用于加密您的cookie并保存发送到浏览器.

此错误是由于Flask-Debugtoolbar代码中这一行

要解决此问题,您只需SECRET_KEY在配置文件中设置一个.

app.config['SECRET_KEY'] = "Your_secret_string"
Run Code Online (Sandbox Code Playgroud)

或者如果你有一个配置文件,只需添加以下配置:

SECRET_KEY = "Your_secret_string"
Run Code Online (Sandbox Code Playgroud)


小智 7

打开Python,在你里面运行

import secrets
secret_key = secrets.token_hex(16)
# example output, secret_key = 000d88cd9d90036ebdd237eb6b0db000
app.config['SECRET_KEY'] = secret_key
Run Code Online (Sandbox Code Playgroud)