【问题标题】:Where do I get a SECRET_KEY for Flask?我在哪里可以获得 Flask 的 SECRET_KEY?
【发布时间】:2016-04-26 10:28:56
【问题描述】:

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

【问题讨论】:

    标签: python flask


    【解决方案1】:

    获取密钥的随机字符串:

    方法一:在 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'
    

    在 Flask 中设置密钥

    方法一:使用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
    

    【讨论】:

      【解决方案2】:

      需要密钥来保证客户端会话的安全。您可以生成一些随机密钥,如下所示:

      >>> 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 文档

      【讨论】:

      • 在 python 3 中,如果您更喜欢纯字符串(例如存储在 JSON 文件中),您可以转换为十六进制字符串:import os; print(os.urandom(24).hex())
      • 你能做SECRET_KEY = os.urandom(24)吗?我相信这每次都会生成一个新密钥,但这会是个问题吗?
      • 我上面的问题得到了回答here
      • 对于像我这样真正懒惰的人,这里是@Daniel Waltrips 行,您可以将其复制粘贴到命令行:python -c "import os; print(os.urandom(24).hex())"
      • @erncyp 或python -c "print(__import__('os').urandom(24).hex())"
      【解决方案3】:

      为了在烧瓶中使用会话,您需要在应用程序设置中设置密钥。 密钥是一个随机密钥,用于加密您的 cookie 并将其保存发送到浏览器。

      这个错误是因为this line in the Flask-Debugtoolbar code

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

      app.config['SECRET_KEY'] = "Your_secret_string"
      

      或者如果您有一个配置文件,只需将以下配置添加到它:

      SECRET_KEY = "Your_secret_string"
      

      【讨论】:

        【解决方案4】:

        打开 Python,在你里面运行下面的代码

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

        【讨论】:

          猜你喜欢
          • 2011-02-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-11
          • 2010-11-17
          • 2013-07-03
          相关资源
          最近更新 更多