运行时错误:会话不可用,因为未设置密钥。将应用程序上的 secret_key 设置为独特且秘密的东西

use*_*827 8 python flask

我正在制作 Flask 应用程序。我写了这段代码:

from flask import Flask, session
from flask_caching import Cache

app = Flask(__name__)
cache = Cache(app, config={'CACHE_TYPE': 'simple'})

@app.route('/my-route')
@cache.cached(timeout=50)
def my_route():
  id = request.args.get('id')
  schema = Schema({
    Required('id'): All(Coerce(str))
})
try:
    schema({'id': id})
except MultipleInvalid as e:
    str(e)

  ans=test(session[‘id’])
  return ans

if __name__ == '__main__':
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

当我运行 append access 时localhost:8000/my-route?id=aDj1948,我得到:

RuntimeError: The session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret. 错误。

我重写了@cache.cached(timeout=50, key_prefix=make_cache_key),但发生了同样的错误。我不认为我必须在代码中的某处设置密钥,所以我真的不明白出了什么问题。

我应该如何解决这个问题?

我的代码有什么问题?

Sel*_*cuk 16

它与缓存无关。为了使用会话,你必须设置一个密钥:http : //flask.pocoo.org/docs/1.0/quickstart/#sessions

初始化后添加以下内容(显然不要使用我的示例并更改密钥)app

app = Flask(__name__)

# Set the secret key to some random bytes. Keep this really secret!
app.secret_key = b'_5#y2L"F4Q8z\n\xec]/'
Run Code Online (Sandbox Code Playgroud)


Chi*_*ffa 5

您可以即时生成秘密:

import secrets

secret = secrets.token_urlsafe(32)

app.secret_key = secret
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这将导致密钥在每次重新启动后发生更改,并使任何签名的 cookie 失效。 (2认同)