2016-06-21 5 views
1

Nodewebkit에서 제공되는 Hapi/React로 빌드 된 앱이 있습니다.Hapi.js 로컬 호스트에만 액세스 제한

응용 프로그램이 사용자 PC에 설치되고 로컬로 실행됩니다. 문제는 다음과 같습니다. - 사용자가 응용 프로그램을 실행합니다. 동일한 네트워크에있는 다른 PC는 응용 프로그램에 액세스하여이를 사용할 수 있습니다. 예를 들어 PC에서 응용 프로그램을 실행하고 IP가 192.168.0.5 인 경우를 예로들 수 있습니다. 다른 사람이 브라우저에 해당 IP를 입력하면 내 응용 프로그램을 사용할 수 있습니다.

이전에는 Hapi 대신 Express를 사용했으며,이를 방지하는 설정이 있었으므로 connecitons가 로컬 호스트에만 국한되었습니다.

Hapi.js에서 어떻게 동일한 작업을 수행 할 수 있습니까?

이 내 Nodewebkit 시작 파일입니다 : (당신의 LAN을 포함한 모든 네트워크 인터페이스)

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.

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

또는

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

server.connection([options]) 문서에서 더 많은 정보를 참조하십시오 : 당신은 당신이 단지 루프백 인터페이스에서 수신 대기해야하므로 서비스는, 당신의 컴퓨터에서 사용할 수있게하려면.

+0

같은 질문이 생겼습니다. 시간 만에 훌륭한 대답. 그래서 여러 개의 Hapi 서버를 생성하기 위해서만 여러 개의 ips를 지정할 방법이없는 것 같습니다. 그렇지 않습니까? – estus

+0

이것은 네트워크 인터페이스 수준이므로 특정 IP에 대한 액세스를 제한하려면 해당 서브넷이 연결된 인터페이스에서만 수신 대기하는 것이 좋습니다. 또는 ... 네트워크 관리자가 아닌 경우 응용 프로그램 수준에서 차단할 수 있습니다. –

+0

자, 잘 됐네, 고마워. – estus

관련 문제