Domanda

Ho cercato un modo per passare l'ip client, nonché l'id utente e la password da una pagina di accesso JAAS all'implementazione del modulo di accesso JAAS nel mio codice web. JAAS consente solo l'ID utente e la password di essere passati al modulo di accesso. La mia idea è di avere un codice di script Java per aggiungere l'indirizzo IP all'ID utente e quindi chiamare il modulo di invio. Non ho il codice java script giusto per farlo. Potete aiutarmi?

La pagina web ha due campi di input, j_userid e j_password, che il codice JAAS conosce per vederlo. Quindi quale codice javaScript posso usare per aggiungere l'indirizzo ip al campo j_userid prima dell'invio del modulo. Stavo pensando a "ip-address # userid" e quindi nel mio modulo di login avrei tolto l'indirizzo ip da userid.

È stato utile?

Soluzione

Ho creato queste due funzioni 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 viene chiamato da un pulsante di accesso. Puoi vedere che ho un bean per inserire l'indirizzo IP in un campo nascosto. Anche il campo j_username JAAS è nascosto ed è compilato dalla funzione 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()" />

Associa l'ip al nome utente e chiama le funzioni di invio JAAS. Quindi nel modulo di accesso ottengo l'indirizzo IP e il nome utente.

String userid = username;

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

Ricorda solo che FacesContext.getCurrentInstance (). getExternalContext (). getRemoteUser () ora contiene ip # userid.

Altri suggerimenti

Siamo spiacenti, non credo che ci sia un modo per ottenere l'ip sul lato client, in semplice Javascript.

Il test dell'ip remoto sul lato server non è probabilmente una soluzione se non si controlla l'infrastruttura tra client e server (bilanciamento del carico, proxy ...). Se sei sicuro che l'ip remoto sia l'ip del client, dovresti essere in grado di hackerare una valvola tomcat o un filtro servlet.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top