如何使用会话管理烧瓶中的用户?

时间:2017-01-15 07:39:05

标签: flask

我正在使用flask socketio创建聊天网站。我控制使用会话加入聊天的人(当用户登录时,我将人们的会话设置为usernake),如会话['name']=username当用户没有聊天时,我将他或她的会话设置为无。但是在这种情况下,当用户通过不点击注销按钮关闭网站时,通过用户注销就会有用户的会话..所以用户的名字就在列表中......

如何通过关闭网站来管理未注销的人?

2 个答案:

答案 0 :(得分:0)

您可能想尝试使用Javascript来检测浏览器关闭事件。它不是一个完美的解决方案,但在很多情况下,它会让你有机会检测到用户正在离开,并启动一些代码来结束他们的会话。

您可以查看各种方法,但我看到this question似乎非常有帮助。

答案 1 :(得分:0)

根据此文档http://flask.pocoo.org/docs/0.12/api/ 你有这个参数flask.session

  

permanent如果设置为True,则会话生效   permanent_session_lifetime秒。默认值为31天。如果设置为   False(默认值)会话将在用户删除时删除   关闭浏览器。

同样来自flask-socketio,提到了会话行为

  

会话上下文全局的行为方式与常规行为不同   要求。 SocketIO时的用户会话副本   建立连接可供在中调用的处理程序使用   这种联系的背景。如果SocketIO处理程序修改了   会话,修改后的会话将保留给未来的SocketIO   处理程序,但常规HTTP路由处理程序将不会看到这些更改。   实际上,当一个SocketIO处理程序修改会话时,就是一个“分叉”   会话专门为这些处理程序创建。技术   这种限制的原因是为了保存用户会话cookie   需要发送到客户端,这需要HTTP请求和   响应,在SocketIO连接中不存在。使用时   服务器端会话,例如Flask-Session或   Flask-KVSession扩展,对HTTP路由中的会话所做的更改   只要会话是,SocketIO处理程序就可以看到处理程序   未在SocketIO处理程序中修改。