1 python authentication flask-socketio
目前,user登录后,我返回了tokenusing JSON。随后,他们必须向该index页面发出请求,并在token中传递HTTP Authorisation header。
该index.html页面包含以下内容:
var socket = io.connect('http://' + document.domain + ':' + location.port + namespace);
socket.on('connect', function() {
socket.emit('join', {room: 'venue_1'});
});
Run Code Online (Sandbox Code Playgroud)
如果user遵循此事件过程,socket则只有在事件之后才可以连接login。但是,我试图防止有人可能只创建html包含上述代码的文件,而不先执行该login步骤的情况。
服务器代码
@socketio.on('connect', namespace='/test')
def test_connect():
# Can anything be done here to verify a user?
emit('my response', {'data': 'Connected'})
Run Code Online (Sandbox Code Playgroud)
有没有办法将a传递token给上述connect事件,以便在那里验证用户。如果token最终无效,我可以打个disconnect电话。
还是在我打以下电话时需要发生这种情况?
socket.emit('join', {room: 'venue_1', token:'token1234'});
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助。
Flask-SocketIO的文档包括Authentication一节。
该解决方案基于SocketIO处理程序中HTTP上下文(用户会话和cookie)的可用性。如果使用Flask-Login管理用户会话,则current_user上下文变量在套接字处理程序中可用。例如:
@socketio.on('connect', namespace='/test')
def test_connect():
if not current_user.is_authenticated()
return # do not respond or disconnect
# user is authenticated
emit('my response', {'data': 'Connected'})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3839 次 |
| 最近记录: |