Hapi.js仅限访问localhost

时间:2016-06-21 08:25:33

标签: javascript hapijs

我正在使用Hapi / React构建一个应用程序,它正在Nodewebkit中提供。

应用程序安装在用户PC上并在本地运行。我遇到的问题是: - 用户运行应用程序。在同一网络上的其他一些PC可以访问应用程序并使用它。例如,如果我在我的PC上运行我的应用程序,我的IP是192.168.0.5。其他人可以在浏览器中输入该IP,并且可以使用我的应用程序。

以前我使用Express而不是Hapi,并且有一个设置可以阻止它,只限制连接器只有本地主机。

如何在Hapi.js中实现相同的目标?

这是我的Nodewebkit启动文件:

process.env.NODE_ENV = "desktop";

var Hapi = require('hapi');
var config = require('./config');
var models = require('./models');

log4js = require('log4js');
log4js.configure({
appenders: [
    { type: 'console' },
    { type: 'file', filename: 'logs/project.log', category: 'projects' }        
 ]
 });

logger = log4js.getLogger('projects');
logger.setLevel('ERROR');
logger.setLevel('INFO');

var plugins = [
require('inert'),
require('blipp')
];

const server = new Hapi.Server();
var path = require('path');
global.appRoot = path.resolve(__dirname);

server.connection({port: config.server.port});

server.register(plugins, function() {   
server.route({
    method: 'GET',
    path: '/{path*}',
    config: {
        auth: false,
        handler: {
            directory: {
                path: './public',
                listing: false,
                index: true
            }
        }
    }
  });
});

server.route(require('./server/config/routes'));
models.sequelize.sync().then(function () {
server.start(function () {        
});
});

1 个答案:

答案 0 :(得分:3)

By default, hapi connections listen on the 0.0.0.0 interface(所有网络接口,包括您的LAN)。您希望您的服务仅在您的计算机上可用,因此您应该只监听环回接口:

server.connection({ port: config.server.port, address: '127.0.0.1' });

server.connection({ port: config.server.port, address: 'localhost' });

查看server.connection([options])文档下的更多信息。