如何识别Socket.IO(通过socketio-auth)成功的身份validation?
我想借助Socket.IO和socketio-auth在Node.js服务器中实现Websocket身份validation。 我的testing平台是一个简单的聊天室,客户端需要向服务器发送密码才能获得join的权限。 我通过socketio-auth来做到这一点,如下所示:
客户端:
socket.on('connect', function(){ socket.emit('authentication', {client: "client", password: "test"}); });
服务器端:
require('socketio-auth')(io, {authenticate: function(data, cb){ cb(null, data.password == 'test');} })
这按预期工作。 因为它允许客户端join。 如果我发送了错误的密码,则连接被拒绝。
但是,我不知道如何从服务器收集数据,告诉客户端它没有权限连接。 我现在得到的是客户端控制台上的一个POST,说'400错误的请求'。 客户端如何检测到它被拒绝访问?
谢谢,
一月
我想出了如何检测错误:由于服务器杀死连接,可以简单地侦听“断开连接”事件:
客户:
socket.on('disconnect', function(error) { console.log(error); // "io server disconnect" })
这当然会因为任何原因在套接字断开时触发。 避免这种情况的一种方法是首先侦听通过正确authentication成功连接时触发的“已authentication”事件。 里面的一个简单地覆盖了“断开”事件:
客户:
socket.on('authenticated', function() { socket.on('disconnect', function(error) { // override }) })
- 使用现有密码哈希和盐创buildHMAC
- PassportJS – GET请求中的login凭据?
- 设置passport-jwtauthentication
- firebase是否为每个admin.auth()。verifyIdToken(idToken)发出networking请求?
- 将非用户字段添加到有效内容以用于JWT令牌
- 在PhoneGap应用上执行授权(通过脸书)REST请求到我的node.js服务器
- Sails.js Waterlock / auth / register导致错误500
- 在NodeJS中使用REST APIauthentication困惑
- 同样的Google云端存储上传脚本可以在一台电脑上运行,但是不能运行,为什么?