문제

클라이언트 IP와 userID와 비밀번호를 JAAS 로그인 페이지에서 내 웹 코드의 JAAS 로그인 모듈 구현으로 전달하는 방법을 살펴보고 있습니다. JAA는 사용자 ID와 비밀번호를 로그인 모듈로 전달할 수 있습니다. 내 아이디어는 IP 주소를 사용자 ID에 추가 한 다음 양식 제출을 호출하는 Java 스크립트 코드를 갖는 것입니다. 이를 수행 할 올바른 Java 스크립트 코드가 없습니다. 도울 수 있니?

웹 페이지에는 j_userid와 j_password의 두 개의 입력 필드가 있으며 JAAS 코드는이를 살펴 보는 것으로 알고 있습니다. 따라서 양식 제출 전에 J_USERID 필드에 IP 주소를 추가하는 데 사용할 수있는 JavaScript 코드를 사용할 수 있습니다. 'IP-Address#userId'를 생각하고 로그인 모듈에서 IP 주소를 userID에서 가져옵니다.

도움이 되었습니까?

해결책

이 두 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은 로그인 버튼에서 호출됩니다. IP 주소를 숨겨진 필드에 넣을 콩이 있음을 알 수 있습니다. J_USERNAME JAAS 필드도 숨겨져 있으며 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()" />

IP를 사용자 이름으로 밀어 내고 JAAS 제출 기능을 호출합니다. 그런 다음 로그인 모듈에서 IP 주소와 사용자 이름을 얻습니다.

String userid = username;

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

faceScontext.getCurrentInstance (). getExternalContext (). getRemoteUser ()는 이제 IP#userID를 가지고 있음을 기억하십시오.

다른 팁

죄송합니다. 일반 JavaScript에서 클라이언트 측에서 IP를 얻는 방법이 없다고 생각합니다.

클라이언트와 서버 간의 인프라를 제어하지 않으면 서버 측에서 원격 IP를 테스트하는 것이 솔루션이 아닐 수 있습니다 (로드-밸런서, 프록시 ...). 원격 IP가 클라이언트의 IP라고 확신하는 경우 Tomcat 밸브 또는 서블릿 필터를 해킹 할 수 있어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top