2014-01-29 5 views
0

사용하여 사용자를 로그인하는 양식 기반 I가 자동으로 사용자가 페이지를 로그인 리디렉션하는 JAAS 기반 양식을 구성하는 방법을 알고 JAAS, MySQL은, 아파치 TomEE, JSP, 서블릿양식 기반 JAAS - 동일한 로그인 양식을 사용하여 명시 적으로

, 그들이 보안 페이지에 액세스하려고 할 때. 기본적으로 Tomye 및 MySQL 용 JDBC Realm (server.xml)을 구성했으며 <security-constraint>s, <security-role>s<login-config>을 선언했습니다. web.xml에 있습니다. 이 web.xml 파일에서, <security-constraint> 태그 내부에 선언 된 페이지에 잘 작동

<form id="loginForm" action="j_security_check" method="post"> 
     <h3>Login:</h3> 
     <p> 
      <label for="name">Username</label> <input name="j_username" 
       id="username" type="text" required/> 
      <!-- required --> 
     </p> 
     <p> 
      <label for="password">Password</label> <input name="j_password" 
       id="password" type="text" required/> 
      <!-- required --> 
     </p> 

     <p> 
      <input type="submit" value="Submit" /> 
     </p> 
    </form> 

그리고 :

그런 다음,이 로그인 폼 다음과 같다.

하지만 사용자가 로그인 할 수있는 페이지에 명시 적으로 액세스하고 싶습니다. 로그인 시스템을 구현하려면 어떻게해야합니까? 선언적 폼 기반 JAAS와 함께 사용하고있는이 로그인 페이지를 사용하고 싶습니다.

web.xml에 JSP 또는 서블릿을 보안 상태로 선언하려고합니다. 그런 다음 사이트의 어딘가에 해당 보안 JSP/서블릿의 URL이있는 링크가 있습니다. 따라서 사용자가 링크를 클릭하면 자동으로 login 페이지로 리디렉션됩니다 (JAAS 기반의 선언적 형식의 일반적인 동작). 그런 다음 로그인에 성공하면 사용자는 보안이 설정된 jsp/servlet으로 리디렉션됩니다.

이제이 보안 jsp/servlet을 /home 서블릿으로 리디렉션 할 수 있습니까? 이 상황에서 문제는 HTTP get/post 요청이라고하지 않기 때문에 서블릿 doGet/doPost 메소드를 구현하는 것이 도움이되지 않습니다.

답변

0

이 질문을 작성할 당시 양식 기반 보안이 어떻게 작동하는지 명확하게 이해하지 못했습니다. 이 로그인 양식을 "명시 적으로"사용하려고 생각했습니다.이 페이지로 이동하려면 로그인 세부 정보를 입력하고 제출 버튼을 누릅니다. 하지만, 이해할 수 있듯이, 폼 기반 보안을 사용할 때는 그렇게 할 수 없습니다.

이렇게 구현했습니다. 사용자가 로그인하려고 할 때 페이지의 로그인 링크를 클릭하면 사용자 계정 세부 정보 JSP 페이지로 연결됩니다.

0

이제이 보안 JSP/서블릿을 리디렉션 할 수 있습니까? /home 서블릿은 어떻게됩니까? 이 상황에서의 문제는 HTTP get/post 요청이 아니므로 servlet doGet/doPost 메소드를 구현하면 도움이되지 않습니다.

/home으로 리디렉션하는 대신/homeredir로 리디렉션하십시오. 그런 다음/homeredir은/home으로 302 리디렉션을 수행합니다. (또는 302 대신 JavaScript 위치 .replace()를 사용합니다.)