在 Flask-SocketIO 事件中获取 Flask-Security 用户 ID

问题描述

this question 中,他们说为了仅向特定客户端广播 socket.io 事件,您需要将用户 ID 和套接字会话 ID 链接到某处。所以在我的套接字连接事件中,我想链接这两个 ID,但用户会话在 socket.io 事件中似乎不可用。有没有办法从这里的 Flask-Security/Login 访问用户 ID?

from flask_security import current_user
from app import socketio

socket_connections = {}

@socketio.on('connect')
def test_connect():
    print("Client connected: " + request.sid)

    # Prints None,even if authenticated
    print(current_user.get_id())

    # Link user ID with session ID
    socket_connections[current_user.get_id() = request.sid]

解决方法

建立 Socket.IO 连接时的用户会话实际上可以在您的 Socket.IO 事件处理程序中访问,并且 current_user 也可以访问。

您没有显示您的代码,所以我无法告诉您出了什么问题,但我建议您尝试名为 sessions.py 的 Socket.IO 示例,它专门用于帮助您了解用户会话在 Socket 下的工作方式。 IO。我什至录制了一个视频,其中包含有关此的一些详细信息以及此示例应用程序的演示:

https://www.youtube.com/watch?v=OZ1yQTbtf5E