我在烧瓶应用程序中有这条路线:
@APP.route('/comparisons', methods=['POST'])
def save_comparison():
if 'comparisons' not in session or not session['comparisons']:
session['comparisons'] = []
entity_id = request.form.get('entity_id')
session['comparisons'].append(entity_id)
session.modified = True
return entity_id
APP.secret_key = 'speakfriend'
这会按预期将entity_id
添加到session['comparisons']
。但是,当我刷新页面时,会话对象不再具有'comparisons'
属性,因此比较列表为空。我错过了什么?
我遗漏了我不知道的重要信息。 vue应用程序还会调用flask api,它会设置自己的会话。 SECRET_KEY
是不同的。因此,当webserver调用之间存在api调用(反之亦然)时,来自一个应用程序的会话将被来自另一个应用程序的会话替换。两者都没有相互理解(不同SECRET_KEY
s)。由于这些总是使用docker-compose
一起部署,解决方案是使用一个共同的env变量将相同的秘密传递给它们。