簡體   English   中英

NodeJS HTTP Server - 如何驗證客戶端的IP和登錄?

[英]NodeJS HTTP Server - How To Verify Client's IP and Login?

如果我決定為我的服務器使用http模塊,我需要執行以下哪些模塊/方法?

謝謝。

當客戶端連接到HTTP服務器時,會發出' connection '事件,並且提供給回調的參數是net.Socket類型的流,它具有一個名為' remoteAddress '的屬性。 同樣,傳遞給請求偵聽器的每個HTTP請求也都有對連接對象的引用:

var http = require('http');
var server = http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello ' + req.connection.remoteAddress + '!');
  // Client address in request -----^
});
server.on('connection', function(sock) {
  console.log('Client connected from ' + sock.remoteAddress);
  // Client address at time of connection ----^
});
server.listen(9797);

對於通過URL中的嵌入式憑據進行身份驗證,我認為這種形式不可靠,因為某些Web瀏覽器不會傳遞 HTTP請求中的信息 (至少IE和Chrome)。 您最好實現基於HTTP標准的身份驗證方案,例如基本訪問身份驗證摘要訪問身份驗證

對於HTTP Basic / Digest身份驗證,您可以使用http-auth模塊

// Authentication module.
var auth = require('http-auth');
var basic = auth.basic({
    realm: "Simon Area.",
    file: __dirname + "/../data/users.htpasswd" // gevorg:gpass, Sarah:testpass ...
});

// Creating new HTTP server.
http.createServer(basic, function(req, res) {
    res.end("Welcome to private area - " + req.user + "!");
}).listen(1337);
  1. 不要依賴IP。 他們很容易被欺騙。
  2. 對於基本身份驗證使用連接http://senchalabs.github.com/connect/middleware-basicAuth.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM