Nodewebkitで提供されているHapi/Reactで構築されたアプリを持っています。Hapi.jsローカルホストへのアクセスのみを制限する
アプリケーションはユーザーPCにインストールされ、ローカルで実行されます。問題は次のとおりです。 - ユーザーがアプリケーションを実行しています。同じネットワーク上の他の一部のPCがアプリケーションにアクセスして使用することができます。たとえば、自分のアプリケーションを自分のPC上で実行し、私のIPが192.168.0.5であるとします。他の人がそのIPをブラウザに入力すると、自分のアプリケーションを使用できるようになります。
以前はHapiではなくExpressを使用していましたが、これを防止する設定があり、ローカルホストのみの接続が制限されていました。
Hapi.jsで同じことを達成するにはどうすればよいですか?
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() {
});
});
ちょうど同じ質問が出てきました。ちょうどいい答え。だから、いくつかのipsを指定する方法はなく、複数のHapiサーバーを作成するだけではないようですね。 – estus
これはネットワークインターフェイスレベルにあります。そのため、特定のIPへのアクセスを制限したい場合は、そのサブネットが接続されているインターフェイスでのみリッスンする必要があります。または、ネットワーク管理者でない場合は、アプリケーションレベルでブロックできます。 –
よかった、ありがとう。 – estus