как определить клиентскую операционную систему в Node.js - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь реализовать 2FA в своем приложении во время входа в систему и хочу отправить им операционную систему и имя устройства, с которого поступает запрос на вход, но я попытался найти решение, чтобы определитьэтот, который я нашел, был только для бэкэнда (модуль nodejs os).Есть ли какой-нибудь модуль npm или способ для меня архивировать это.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Я хочу отправить им страну, из которой исходит запрос на вход в систему

IMO, это можно / нужно определить на стороне сервера (используя что-то вроде node-geoip.)

Что касается определения клиентской операционной системы, вам необходимо проанализировать заголовок запроса User-Agent .Предложенный модуль Tilak Putta также может использоваться в бэкэнде.


Пример:

const http = require('http');

const geoip = require('geoip-lite'); // npm install --save geoip-lite -- have a look at https://github.com/bluesmoon/node-geoip to know how to update the datafiles
const Sniffr = require("sniffr"); // npm install --save sniffr
const requestIp = require('request-ip'); // npm install --save request-ip

const HOST = process.env.HOST || '0.0.0.0';
const PORT = process.env.PORT || 1337;

const server = http.createServer((req, res) => {
  const userAgent = req.headers['user-agent'];
  const s = new Sniffr();
  s.sniff(userAgent);

  const clientIp = requestIp.getClientIp(req);
  const geo = geoip.lookup(clientIp); // will be set to null if server is accessed locally

  res.statusCode = 200;
  res.setHeader('Content-Type', 'application/json');
  res.end(JSON.stringify({
    ...s,
    clientIp,
    geo
  }, null, 2));
});

server.listen(PORT, HOST, () => {
    console.log(`Server is listening on http://${HOST}:${PORT}`);
});
0 голосов
/ 13 сентября 2018

Используйте пакет Sniffr для получения информации от user-agent из заголовков в запросе ...

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...