2011-04-23 6 views
4

jsf, ejbs 및 jpa를 사용하여 웹 응용 프로그램을 작성하고 있습니다. 현재 양식 기반 j_security_check을 사용하여 인증을 처리합니다.j_security_check 대 프로그래밍 방식의 보안

"내 계정 정보 기억"옵션과 같은 쿠키 지원을 구현해야합니다. 또한 무차별 공격을 막으려 고합니다. ie 5 개의 실패한 로그온 후에 특정 사용자를 잠그십시오.

나는 다른 옵션 등

모든 사용 j_security_check의를 구현하는 방법은 없나요 ServletFilters를 사용하여 프로그래밍 방식으로 할 것 이해? 또는 프로그래밍 방식으로 다시 전환해야합니까?

답변

0

이것은 j_security_check를 중심으로 맞춤 구현되어야합니다. 당신은 보안 검사가 userPrincipal을 반환 한 후 세션에서, j_security_check의 SecurityFilter에서

<filter-mapping> 
    <filter-name>SecurityFilter</filter-name> 
    <url-pattern>/j_security_check</url-pattern> 
</filter-mapping> 

설정 추가 정보를 서블릿 필터를 부착하고 계속할 수 있습니다. 그러나 userPrincipal이 null 인 경우 데이터베이스에서 실패 횟수를 가져 와서 로그인 페이지에 표시 될 수있는 실패 메시지 (실패 횟수 포함)를 세션에 넣습니다.

public void doFilter(ServletRequest request, ServletResponse response, 
     FilterChain chain) throws IOException, ServletException { 

    Principal userPrincipal = null; 
      String username = httpServletRequest.getParameter("j_username"); 
    String rememberme = httpServletRequest.getParameter("rememberme"); 
    chain.doFilter(request, response); 
    userPrincipal = httpServletRequest.getUserPrincipal(); 

j_security_check을 완료 한 후에 쿠키를 설정해야하며 "rememberme"변수의 값을 사용할 수 있습니다. 로그인 성공 또는 실패에 따라 쿠키를 설정할 수 있습니다.