2010-05-14 3 views
1

다음을 궁금합니다 :JSF2 : 탐색 규칙에서 EL 사용. 타임 아웃시 리디렉션 하시겠습니까?

요청이 JSF 서블릿에 들어 오면 세션 빈이 세션에 로그인되지 않았 음을 나타내면 세션 시간 초과 페이지로 리디렉션 할 수 있습니까? 예를 들어

:

<navigation-rule> 
    <from-view-id>*</from-view-id> 
    <navigation-case> 
     <if>#{not userBean.loggedIn}</if> 
     <to-view-id>/login.jsf</to-view-id> 
     <redirect/> 
    </navigation-case> 
</navigation-rule> 

분명히이 규칙에서 login.jsf를 제외해야합니다 ...하지만 당신이 포인트를 얻을. 나는 비슷한 것을 시도해 보았고 작동하지 않는 것처럼 보였습니다. 그렇더라도 북마크 된 URL을 어떻게 다룰 수 있습니까?

이것을 JSF2에서 구현하는 가장 좋은 방법은 무엇입니까? 또한, JSF2에서 ASP.NET의 global.asax와 같은 것이 있습니까? 아니면 PhaseListeners/Filters입니까?

감사합니다.

+0

이것이 정확히 무엇인지 물어 보는 것이 확실치 않지만 비슷한 질문이있는 것 같습니다. http://stackoverflow.com/questions/1438351/redirecting-on-session-timeout-in-jsf- richfaces-facelet –

+0

응답 해 주셔서 감사합니다. 닫기 ....하지만별로. 세션이 실제로 타임 아웃되었을 때가 아니라 (즉, 로그인 한 사용자를 테스트하기 위해 탐색 규칙에서 EL을 사용하는 이유이기 때문에) 페이지가 요청 될 때마다이 작업을 수행 할 수 있어야합니다. 궁극적으로 McDowell이 언급 한 보안 설정으로 문제의 일부가 해결됩니다. – CDSO1

답변

1

NavigationHandler은 수명주기 (Invoke Application)의 아주 늦게까지 호출되지 않으므로 탐색 규칙은 이러한 종류의 기능에 적합하지 않습니다.

alt text http://www.ibm.com/developerworks/library/j-jsf2/basic-lifecycle.gif


당신은 로그인 페이지로 리디렉션 declarative security (은 web.xml에서) 사용할 수 있습니다. 또는 발생하는 상황을 미세하게 제어하려면 Filter을 사용하여 리디렉션 할 수 있습니다.

+0

현재 PartialViewContextFactory 데코레이션을 사용하고 PartialViewContext, PartialViewContextWriter를 사용하여 찾고있는 것을 구현하려고합니다. Ajax 응답을 내 세션 시간 초과 페이지로 리다이렉트하도록 기본 Ajax 응답을 원합니다. 시간 초과 된 세션에서 요청이 수행되었습니다. 답변이 매우 명확하고 도움이됩니다. 고맙습니다. – CDSO1

+0

@ CDSO1 - 컨텍스트가 어떻게 도움이 될지 모르겠습니다. 일반적으로 AJAX 동작을 검사하지는 않았지만 Restore View 단계에서 만료 된 세션에 데이터가 제출되면 라이프 사이클에서 'ViewExpiredException'이 발생합니다. 이것은 ViewHandler에 의해 처리됩니다. AJAX에 대한 리다이렉트는 어떤 형태의 메시지를 클라이언트에 보내고 자바 스크립트를 통해 리다이렉트 할 것을 요구한다. – McDowell

+0

기본적으로 서버의 모든 Ajax 응답에 일부 스크립트를 포함 시키려고합니다. " 해결책을 찾고 있지만 아직 해결되지 않았습니다 .. – CDSO1

관련 문제