微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 SocketIO 事件中的 flask_security 获取 current_user 对象的问题

如何解决从 SocketIO 事件中的 flask_security 获取 current_user 对象的问题

正如标题所说,我一直在尝试在 SocketIO 事件中引用 current_user 对象,如下所示:

@socketio.on('connect')
@socketio.on('login')
def on_connect():
    print("Client connected")
    print("Current user ID:",current_user.get_id())
    print("SocketIO Session ID:",request.sid)

连接是在用户登录之前创建的,因此我尝试集成 flask-session 以便在用户登录后保持 current_user 对象是最新的,并且我添加一个登录后挂钩以便验证用户是否确实已登录

app.config['SESSION_TYPE'] = 'filesystem'
socketio = SocketIO(app,manage_session=False)
sess = Session(app)

@user_logged_in.connect_via(app)
def _after_login_hook(sender,user,**extra):
    print("ID of the user that just logged in:",user.id)

这是我第一次连接到应用程序时得到的当前输出

Client connected
Current user ID: None
SocketIO Session ID: WyOkORnDbLjSrXUDAAAD

当前用户None 值是预期的,因为此时用户尚未登录,因此我们正在获取 AnonymousUser 对象。问题是在用户登录后,我仍然收到一个 None 值:

ID of the user that just logged in: 2
Client connected
Current user ID: None
SocketIO Session ID: WyOkORnDbLjSrXUDAAAD

任何关于为什么我可能会在成功登录后获得 AnonymousUser 对象的想法将不胜感激。

Flask==1.1.2
Flask-Login==0.5.0
Flask-Security-Too==3.4.5
Flask-SocketIO==5.0.1
Flask-Session==0.3.2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。