Notificar usuário de logon do novo dispositivo ou local

Notificar usuário de logon do novo dispositivo ou local

*1. Introdução *

Neste tutorial, demonstraremos como podemos* verificar * se nossos usuários estão registrando-se em a partir de um novo dispositivo/local .

Enviaremos uma notificação de login para que eles saibam que detectamos atividades desconhecidas em sua conta.

*2. Localização dos usuários e detalhes do dispositivo *

Precisamos de duas coisas: a localização de nossos usuários e as informações sobre os dispositivos que eles usam para fazer login.

Considerando que estamos usando HTTP para trocar mensagens com nossos usuários, teremos que confiar apenas na solicitação HTTP recebida e em seus metadados para recuperar essas informações.

Felizmente para nós, existem cabeçalhos HTTP cujo único objetivo é transportar esse tipo de informação.

====* 2.1 Localização do dispositivo *

Antes de podermos estimar a localização de nossos usuários, precisamos obter o endereço IP de origem.

Podemos fazer isso usando:

  • X-Forwarded-For - o cabeçalho padrão de fato para identificar o endereço IP de origem de um cliente conectado para um servidor da web através de um proxy HTTP ou balanceador de carga *https://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getRemoteAddr()[ServletRequest.getRemoteAddr()] - um método utilitário que retorna o IP de origem do cliente ou o último proxy que enviou a solicitação

Extrair o endereço IP de um usuário da solicitação HTTP não é muito confiável, pois eles podem ser adulterados. No entanto, vamos simplificar isso em nosso tutorial e assumir que não será esse o caso.

Depois de recuperar o endereço IP, podemos convertê-lo para um local do mundo real em geolocation.

====* 2.2 Detalhes do dispositivo *

Da mesma forma que o endereço IP de origem, também há um cabeçalho HTTP que carrega informações sobre o dispositivo usado para enviar a solicitação chamada https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User- Agente [User-Agent].

Em suma, ele carrega informações que nos permitem* identificar * o application type , operating system _, e _software