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