0

Ich habe diesen einfach Knoten App einen Web-Server läuft mit ausdrücken und basic-auth-Verbindung.Wie Benutzer IP verwenden bekommen basic-auth-Verbindung und Express

Ich weiß, dass ich die Client-IP-Adresse auf app.get bekommen kann (...) so etwas wie

var ip mit = req.headers [ 'x-forwarded-for'] || req.connection.remoteAddress;

Aber wenn die HTTP-Authentifizierung fehlschlägt es dort nicht bekommen ::

var express = require('express'); 
var app = express(); 
var basicAuth = require('basic-auth-connect'); 

app.set('port', (process.env.PORT || 5000)); 

app.use(basicAuth(function(user, pass){ 
    authState = 'someUserName' == user && 'somePassword' == pass; 
    console.log(user, pass, authState); 

    // NEED the IP here ...   

    return authState; 
})); 

app.get('*', function(req, res) { 
    var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress; 
    console.log(ip); 

    res.sendFile(__dirname + '/'); 
}); 

app.listen(app.get('port'), function() { 
    console.log('Node app is running on port', app.get('port')); 
}); 
+0

können Sie erhalten es verwendet nur Express; http://stackoverflow.com/questions/10849687/express-js-how-to-get-remote-client-address –

Antwort

0

Nur eine einfache Lösung gefunden, fügte ich einen anderen Express Middleware vor Auth:

app.use(function (req, res, next) { 
    var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress; 
    console.log(ip); 
    next(); 
});