删除Flask会话

时间:2015-07-23 15:51:13

标签: python session flask websocket

登录后在我的应用中,我设置了:

session['venue_id'] = True

在我的javascript我然后连接到我的websocket

var socket = io.connect('http://my.ip.address.' + ':' + '80' + namespace);  

这会在我的服务器上触发以下代码:

@socketio.on('connect', namespace='/test')
def test_connect():
    if session.get('venue_id'):
       session.pop('venue_id', None)
    else:
        request.namespace.disconnect()  

在此之后,我会对我的API打电话进行检查:

if session.get('venue_id')

然而,它总是很好。我原以为这些requests不会if语句venue_id popped已经session.pop('venue_id', None)

我在这里阅读答案:Python + Flask - Removing key from session too fast

但现在我对{{1}}的目的是什么感到困惑?

非常感谢任何有关清除此事的帮助。

1 个答案:

答案 0 :(得分:0)

您需要发送(非websocket)响应才能更改会话。只是弹出值无效,因为浏览器不会更新它的一面,只是再次发送数据下一个请求。现在,申请:

  1. 登录,设置值,返回响应
  2. 发送请求(对于websocket),发送值
    1. 响应套接字发送的响应发生在test_connect事件处理程序之前,因此不会弹出值
    2. 事件处理程序运行,无法告诉browswer会话已更改
  3. 浏览器发送其他页面的请求,发送值
  4. 可能最简单的解决方案是存储会话服务器端,即使不发送响应也可以在其中进行更改。