只允许从node.js中的特定IP地址访问目录
问题描述:
我有一个简单的socket.io
应用程序,我想保护正在向其他连接的套接字发送事件的目录。只允许从node.js中的特定IP地址访问目录
var io = require('socket.io'),
connect = require('connect');
var app = connect().use(connect.static('public')).listen(3000);
var children = io.listen(app);
Inside public
directory我有用户可以访问的所有文件。 public/_app
我有一个应用程序正在向其他连接的套接字发送事件。这个目录应该只能从我的IP地址访问。
谢谢。
答
插入静态中间件之前,您可以插入自定义的中间件:
var app = connect()
.use(function(req, res, next) {
if (req.url.indexOf('/_app/') === 0) // YOUR 'HIDDEN' PATH
{
var ipnumber = req.socket.address().address;
if (ipnumber !== '127.0.0.1') // YOUR IP NUMBER
{
res.writeHead(404);
return res.end();
}
}
next();
})
.use(connect.static('public'))
.listen(3000);
这时候一个无效的IP号码试图访问你的管理应用程序生成的响应404 Not Found
。当然,您也可以生成401 Unauthorized
。
谢谢你,工作完美。 – fjckls