【问题标题】:Removing Flask session删除 Flask 会话
【发布时间】:2015-07-23 15:51:12
【问题描述】:

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

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_idpopped

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

但现在我很困惑session.pop('venue_id', None)的目的是什么?

我们将不胜感激任何有关清理此问题的帮助。

【问题讨论】:

    标签: python session flask websocket


    【解决方案1】:

    您需要发送一个(非 websocket)响应来更改会话。只是弹出值什么都不做,因为浏览器不会更新它,只是在下一次请求时再次发送数据。现在,应用程序:

    1. 登录、设置值、返回响应
    2. 发送请求(用于 websocket),发送值
      1. 无论套接字发送的任何响应都发生在 test_connect 事件处理程序之前,因此不会弹出值
      2. 事件处理程序运行,无法告诉浏览器会话已更改
    3. 浏览器向其他页面发送请求,发送值

    可能最简单的解决方案是存储会话服务器端,即使不发送响应也可以更改它。

    【讨论】:

      猜你喜欢
      • 2013-01-22
      • 2014-07-08
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 2012-08-12
      相关资源
      最近更新 更多