2016-06-21 10 views
1

ich eine App mit Hapi/React gebaut habe, dass in Nodewebkit serviert wird.Hapi.js Beschränken Sie den Zugriff nur auf localhost

Anwendung auf Benutzer-PC lokal installiert und ausgeführt werden. Problem ich habe, ist dies: - Benutzer die Anwendung ausführt. Ein anderer PC, der sich im selben Netzwerk befindet, kann auf die Anwendung zugreifen und sie verwenden. Zum Beispiel, wenn ich meine Anwendung auf meinem PC ausführe, und meine IP ist 192.168.0.5. Andere Personen können diese IP im Browser eingeben und sie kann meine Anwendung verwenden.

Bisher habe ich Express statt Hapi verwendet, und es gab eine Einstellung, die es verhindert, begrenzt die connecitons nur ot lokalen Host.

Wie erreiche ich die gleiche Sache in Hapi.js?

Das ist meine Nodewebkit Startdatei:

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

Antwort

3

By default, hapi connections listen on the 0.0.0.0 interface (alle Netzwerkschnittstellen, einschließlich LAN). Sie wollen Ihren Dienst nur auf dem Gerät, so dass Sie auf die Loopback-Schnittstelle nur hören sollte:

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

oder

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

Weitere Informationen unter server.connection([options]) docs.

+0

kam nur mit der gleichen Frage auf. Große Antwort, gerade rechtzeitig. Es scheint also, dass es keine Möglichkeit gibt, mehrere ips anzugeben, nur um mehrere Hapi-Server zu erstellen, oder? – estus

+0

Dies ist auf der Netzwerkschnittstellenebene. Wenn Sie also den Zugriff auf bestimmte IPs beschränken möchten, möchten Sie wahrscheinlich nur auf einer Schnittstelle warten, mit der das Subnetz verbunden ist. Oder ... Sie können sie auf Anwendungsebene blockieren, wenn Sie nicht der Netzwerkadministrator sind. –

+0

Ok, gut, danke. – estus

Verwandte Themen