nodejs websocket和http基本authentication
我想在我的nodejs websocket应用程序中实现http基本身份validation身份validation。 这是我的一段代码:
var http = require('http'); var auth = require('http-auth'); var express = require('express'); var app = express(); //.... basic = auth.basic({ realm: "websocket auth", file: __dirname + "/users.htpasswd" }); var server = http.createServer(basic); app.listen = function() { return server.listen.apply(server, arguments); }; // WEBSOCKET var WebSocketServer = require('websocket').server; var wss = new WebSocketServer({ httpServer: server }); wss.on('request', function(request) { var connection = request.accept(); connection.sendUTF('Server: message ws auth'); });
对于标准的http访问身份validation,它工作正常,但我不能让它在websocket上工作,当我通过websocket连接,我立即得到回应。 甚至有可能通过websocket上的http进行身份validation?
不直接。
Websockets不是HTTP,所以他们不会像HTTP AUTH,发送cookies等等。
对于我们的websocket连接,我们传递cookie作为请求URL的参数。 然而,我们使用socket.io,它提供了一个类似于HTTP服务器中间件的authenticationfunctionsorting。
你应该可以用Websocket-node中的#accept
方法做类似的#accept
。 检查进入的数据,如果没有授权,拒绝连接。