2011-04-11 3 views
0

그리고 저를 읽어 주셔서 감사 ... AuthenticationFailureHandler가 Spring 3 및 RichFaces에 로그인 문제를 표시하는 방법은 무엇입니까?

내가 최대 절전 모드, JSF2, RichFaces, 봄 3 MVC 패턴과 응용 프로그램 ...

내가, 로그인 폼 작업을 가지고 있지만 불가능 오기 '한 로그인 오류를 표시하려면 ... 왜?

응용 문맥 :

<sec:form-login login-page="/pages/loginPage.xhtml" 
login-processing-url="/j_spring_security_check" 
authentication-success-handler-ref="myAuthSuccessHandler" 
authentication-failure-handler-ref="myAuthErrorHandler"/> 

UserAuthenticationErrorHandler :

public class UserAuthenticationErrorHandler implements AuthenticationFailureHandler { 
... 
@Override 
public void onAuthenticationFailure(HttpServletRequest request, 
    HttpServletResponse response, AuthenticationException ae) 
    throws IOException, ServletException { 

    UsernamePasswordAuthenticationToken user = (UsernamePasswordAuthenticationToken)ae.getAuthentication(); 
    request.setAttribute("error", "Can you Show me???"); 
    response.sendRedirect("......"); 

} 
... 
} 

그리고 마지막 login.xhtml하지마 SHOW 오류:(

모든 아이디어 ??? 대단히 감사합니다!

답변

2
<c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}" /> 

표시 봄 보안 발표 세션 속성, 그것을 잘 작동합니다 그래서. 당신이 요청 속성을 표시하려고

request.setAttribute("error", "Can you Show me???"); 
... 
<c:out value="${error}"/> 

. 그러나 요청 속성은 리디렉션에서 살아남지 못합니다. 당신이 error라는 이름의 요청 URL 매개 변수를 확인

request.getSession().setAttribute("error", "Can you Show me???"); 

<c:if test="${not empty param.error}"> 

에서 : 당신이 리디렉션을 통해 메시지를 전달해야하는 경우, 대신 세션 속성을 사용할 수 있습니다. 리디렉션 URL 형성 할 때 당신은 그 매개 변수를 설정해야합니다 : 예,

response.sendRedirect("......?error=1");  
+0

안녕을 확인 것은 이것이,하지만 난 JSTL을하지 않은 경우 나는 내 프로젝트 만 JSF2 ... 에 JSTL 태그 라이브러리를하지 않은 태그 라이브러리, 어떻게 jsf2 탭 라이브러리 atributte "오류"로 쓸 수 있습니까? – ganzux

+0

@ganzux : 저는 JSF에 익숙하지 않습니다. 단순히'$ {error}'라고 쓸 수는 있지만 HTML로 이스케이프 처리되지는 않습니다. – axtavt

+0

감사합니다. 작동합니다! :-) – ganzux

관련 문제