Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

88
Visualizações
Registro de middleware de registro de Nodejs solo una vez

Mi aplicación nodejs express sirve un archivo que requiere y carga archivos css, js, etc. Tengo un middleware de registro que solicita la ip de un cliente y registra dicha ip (después de comprobar que no coincide con un archivo json de ips maliciosas ). Debido a los recursos que carga el servidor, cuando una persona carga una página una vez, el servidor registrará la ip muchas veces.

registro de middleware:

 function checkIP(req, res, next) { const clientIp = req.ip; let allowCXN = true; //read json file fs.readFile("ip_info.json", "utf8", function (err, data) { if (err) { console.log(err); } else { var ip_info = JSON.parse(data); for (let i = 0; i <= ip_info.ip_array.length - 1; i++) { //console.log(ip_info.ip_array[i].ip); if (clientIp == ip_info.ip_array[i].ip) { allowCXN = false; } } if (!allowCXN) { res.end(); next(); } } else { console.log("Now serving ip:", "\x1b[33m", clientIp, "\x1b[37m"); next(); } } }); }

La ip también se registra en un archivo json separado para realizar un seguimiento de quién se ha conectado, esto llena la matriz json con la misma ip una y otra vez, en lugar de solo una vez. ¿Hay alguna manera de registrar la ip solo una vez para una conexión en lugar de para cada conexión a todos los demás archivos requeridos?

archivo JSON según lo solicitado:

 { "ip_array": [ { "ip": "::ffff:198.23.172.233", "unauth_joins": 0 }, { "ip": "::ffff:64.62.197.182", "unauth_joins": 0 }, { "ip": "::ffff:23.148.145.235", "unauth_joins": 0 }, { "ip": "::1", "unauth_joins": 0 }, { "ip": "::ffff:127.0.0.1", "unauth_joins": 0 } ] }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Puedes hacer algo como esto:

 const ip_info = JSON.parse(data); for (let i = 0; i <= ip_info.ip_array.length - 1; i++) { //console.log(ip_info.ip_array[i].ip); const result = ip_info.ip_array.find(el => el.ip === 'userIPAddress'); if(result) { // it means IP exist don't append in the data } else { // add to the array } }

También podría haber otras formas, como agregar la dirección IP como clave en el objeto o puede usar Map DS desde el JS nativo, es eficiente para buscar.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda