RuntimeError:会话不可用,因为未设置任何秘密密钥。将应用程序上的secret_key设置为唯一且秘密的内容

时间:2018-07-20 06:32:07

标签: 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)

当我运行附加访问localhost:8000 / my-route?id = aDj1948时, RuntimeError:会话不可用,因为未设置任何秘密密钥。将应用程序上的secret_key设置为唯一且秘密的内容。发生错误。 我改写了@cache.cached(timeout=50, key_prefix=make_cache_key) ,但同样会发生错误。我认为我不必在代码中的某个地方设置秘密密钥,因此我真的不明白什么是错误的。我该如何解决?我的代码有什么错误?

2 个答案:

答案 0 :(得分:1)

它与缓存无关。为了使用会话,您必须设置一个秘密密钥: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]/'

答案 1 :(得分:1)

您可以即时生成秘密:

import secrets

secret = secrets.token_urlsafe(32)

app.secret_key = secret