Hapi.js 仅限本地主机访问

Hapi.js Limit access only to localhost

我有一个使用 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 () {        
});
});

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]) 文档下查看更多信息。