我尝试使用passport在ports.io中通过websocket实现登录。我在整个网络上搜索了一个解决方案,但无法弄清楚如何使用护照登录websocket。
这个想法是客户端发出一个事件login
,其中包含用户名和密码作为数据。然后,服务器应在socket.on('login', function(data) ...)
部分进行登录。
我可以在客户端发出事件,并在服务器端对它做出反应。但我无法弄清楚如何使用我为护照定义的本地策略来使用我从客户端获得的数据登录用户。我设法使用单独的帖子请求执行登录,但不通过websocket执行登录。
因此,这是在客户端发出login
事件的代码:
<script>
var socket = io();
$('form').submit(function() {
var formData = {};
$.each($(this).serializeArray(), function() {
formData[this.name] = this.value;
});
socket.emit('login', formData);
return false;
});
</script>
在服务器端,我有这个代码,应该登录我:
io.on('connection', function(socket) {
socket.on('login', function(loginData) {
// ----> passport.login based on loginData
});
});
我已将护照连接到socket.io,使用passport.socketio
包并将快速会话与包express-socket.io-session
相关联。所以会话路径工作得很好。