2016-06-21 5 views
1

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() {   
}); 
}); 

答えて

3

By default, hapi connections listen on the 0.0.0.0 interface(あなたのLANを含むすべてのネットワーク・インタフェース):

これは私のNodewebkit起動ファイルです。

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

または

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

server.connection([options])ドキュメントの下の詳細情報を参照してください:あなたは唯一のループバックインターフェイスに聞く必要がありますので、あなたのサービスでのみ、あなたのマシン上で利用できるようにしたいです。

+0

ちょうど同じ質問が出てきました。ちょうどいい答え。だから、いくつかのipsを指定する方法はなく、複数のHapiサーバーを作成するだけではないようですね。 – estus

+0

これはネットワークインターフェイスレベルにあります。そのため、特定のIPへのアクセスを制限したい場合は、そのサブネットが接続されているインターフェイスでのみリッスンする必要があります。または、ネットワーク管理者でない場合は、アプリケーションレベルでブロックできます。 –

+0

よかった、ありがとう。 – estus

関連する問題