Pergunta

Eu estive olhando para uma maneira de passar o ip do cliente, bem como o ID de usuário e senha de uma página de login JAAS ao JAAS implementação do módulo de login no meu código web. JAAS permite apenas o ID de usuário e senha a serem passados ??para o módulo de login. Minha idéia é ter um código java script para anexar o endereço IP para o ID do usuário e, em seguida, chamar o formulário de envio. Eu simplesmente não tenho o código java script direito de fazer isso. Pode você ajudar?

A página web tem dois campos de entrada, j_userid e j_password, que o código JAAS sabe que procurá-lo. Então, o código JavaScript que posso usar para adicionar o endereço IP para o campo j_userid antes do envio de formulário. Eu estava pensando em 'ip-address # ID de usuário' e depois no meu módulo de login Eu levaria o endereço IP fora da ID de usuário.

Foi útil?

Solução

Eu criei essas duas funções JavaScript.

function addIpSubmit() 
{                 
    var theForm = document.getElementById("login_form");
    var userName = theForm.username.value;
    userName = theForm.clientip.value + "#" + userName;
    theForm.j_username.value = userName;
    if( validate_required( theForm.username, "User ID is required" ) )
    {
        if(  validate_required( theForm.j_password, "Password is required" ) )
        {
            theForm.submit();
        }
    }
}  

function validate_required( field, alerttxt )
{
    with (field)
    {
        if (value==null||value=="")
        {
            alert(alerttxt);
            return false;
        }
        else
        {
            return true;
        }
    }
}

addIpSubmit é chamado a partir de um botão de login. Você pode ver que eu tenho um feijão colocar o endereço ip em um campo escondido. O campo JAAS j_username também está oculto e é preenchido pela função addIpSubmit ().

<input id="clientip" type="hidden" name="clientip" value="#{loginMBean.ip}"/>
<input id="j_username" type="hidden" name="j_username" />
<input type="button" name="OtherLogin" value="Login" onclick="addIpSubmit()" />

É mungs o IP para o nome do usuário e chama as JAAS enviar funções. Em seguida, no módulo de login eu recebo o nome do endereço IP e usuário para fora.

String userid = username;

if( username.contains( "#" ) )
{
    ip = username.split( "#" )[0];
    userid = username.split( "#" )[1];
}

Basta lembrar que a FacesContext.getCurrentInstance (). GetExternalContext (). GetRemoteUser () agora tem o ip # ID de usuário nele.

Outras dicas

Desculpe, eu não acho que há uma maneira de obter o ip no lado do cliente, em Javascript simples.

Testando o ip remoto no lado do servidor provavelmente não é uma solução, se você não controla a infra-estrutura entre o cliente eo servidor (balanceadores de carga, proxies ...). Se você está confiante de que o ip remoto é o ip do cliente, você deve ser capaz de cortar um tomcat válvula ou um filtro de servlet.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top