2010-01-05 3 views
2

스프링 웹 흐름 보안을 사용하는 j2ee 웹 응용 프로그램이 있습니다. 현재 오류가 발생하여 사용자의 역할에 액세스하는 페이지에 액세스 할 수없는 경우 사용자에게 페이지 (어쩌면 오류 페이지)를 리디렉션하고 싶습니다.스프링 보안 리디렉션 페이지에 액세스 권한이없는 경우 리디렉션

오류 404 - 찾을 수 없음 RFC 2068에서 Hypertext Transfer Protocol - - HTTP/1.1 : 10.4.5 404 찾을 수 없음 서버가 Request-URI와 일치하는 것을 찾지 못했습니다. 그 상태가 일시적인지 또는 영구적인지는 알려주지 않았다.

서버가이 정보를 클라이언트에서 사용할 수 없게하려는 경우 대신 상태 코드 403 (금지됨)을 사용할 수 있습니다. 410 (Gone) 상태 코드는 서버가 내부적으로 구성 가능한 메커니즘을 통해 이전 자원을 영구적으로 사용할 수없고 전달 주소가 없다는 것을 알고있는 경우에 사용되어야합니다 (SHOULD).

어떻게이 리디렉션을 수행합니까? security : http의 액세스 거부 페이지 속성을 시도했지만 여전히 오류가 발생합니다. 다음은 security-http에 대한 제 구성입니다.

그건 그렇고. 스프링 페이스와 페이스 렛을 사용하고 있습니다. 이것이 문제의 원인 일 수 있습니까?

<!-- Configure Spring Security --> 
<security:http auto-config="true" access-denied-page="/deniedpage.xhtml" 
    session-fixation-protection="newSession"> 
    <security:intercept-url pattern="/main.do" 
     access="ROLE_SUPERVISOR, ROLE_USER" /> 
    <security:intercept-url pattern="/logoutSuccess.do" 
     access="ROLE_SUPERVISOR, ROLE_USER" /> 
    <security:intercept-url pattern="/edit.do" 
     access="ROLE_SUPERVISOR" /> 
    <security:intercept-url pattern="/register.do" 
     access="ROLE_SUPERVISOR" /> 
    <security:intercept-url pattern="/admin_main.do" 
     access="ROLE_SUPERVISOR" /> 
    <security:intercept-url pattern="/*" 
     access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
    <security:form-login login-page="/loginForm.do" 
     default-target-url="/main.do" authentication-failure-url="/loginForm.do?login_error=1" /> 
    <security:logout logout-url="/logout.do" 
     invalidate-session="true" logout-success-url="/logoutSuccess.do" /> 
    <security:concurrent-session-control 
     max-sessions="-1" exception-if-maximum-exceeded="true" expired-url="/loginform.do" /> 

</security:http> 
+0

나에게 좋아 보인다. 로그에서 /deniedpage.xhtml로 리디렉션하려고하는지 확인할 수 있습니까? "리디렉션 중 ..."과 같은 오류가 있습니다. – rodrigoap

+0

알았습니다. 제한된 페이지에 액세스 할 때 이미 액세스 거부 페이지에 설정된 내용에 따라 원하는 위치로 이동합니다. 그러나 이미 웹 흐름에 들어갔을 때 흐름이 지속되는 동안 제한 사항이 변경 되어도 계속 기동 할 수 있습니다. 그래서 중요한 상태에 대한 액세스 ROLE을 다시 검사하는 또 다른 상태를 만들었습니다. 물론 주 차원에서 제한하는 방법이없는 한 – cedric

답변

5

보안의 액세스 거부 페이지 속성 : HTTP은 우리에게 당신이 사용하고있는 스프링 구성을 보여 충분합니다. 한편
web.xml에이 추가보십시오 :

<error-page> 
    <error-code>404</error-code> 
    <location>notfound.jsp</location> 
</error-page> 
+0

위의 구성을 추가했습니다. – cedric