2011-12-09 7 views
2

우리는 "상자"웹 제품을 개발 중이므로 응용 프로그램이 배포되는 환경을 예측할 수 없습니다. 이 응용 프로그램은 스프링 보안을 사용합니다. 그러나 Tomcat이 루트에 응용 프로그램을하지 배치이라면 다음과 같은 구성이 실패 등장 :봄 보안 (3.0.x)에서 가변 컨텍스트 경로 지정

권고에 따라
<sec:http auto-config="true" > 
    .... 
    <sec:form-login login-page="/ui/Login" /> 

: https://stackoverflow.com/a/6934712/149818이 작동하지 않습니다

#{servletContext.contextPath}

을 사용합니다. 대신 http://foo/myApp/ui/Login의 사용자는 그래서 제 질문은

  • 입니다 http://foo/ui/Login

    로 리디렉션 중 하나 살아 {servletContext.contextPath} #을하는 방법을

  • 또는 인식 실제의 contextPath 봄 - 보안을 적용하는 방법
+1

나는 문맥 경로가'login-page'에 자동적으로 첨부되어 있다고 확신합니다. 어떤 스프링 보안 버전을 사용합니까? – axtavt

+0

@axtavt 3.0.7 – Dewfy

+2

맞지 않습니다. 리디렉션을 처리하는'LoginUrlAuthenticationEntryPoint' 클래스는 URL의 일부로 컨텍스트 경로를 항상 포함합니다 (예를 들어 샘플 앱은 컨텍스트 경로를가집니다). 리디렉션이 발생하는 곳에 디버그 로그의 관련 섹션을 게시 할 수 있습니까? [FAQ] (http://static.springsource.org/spring-security/site/faq/faq.html#faq-anon-access-denied)에 설명 된대로 일반적으로 'ExceptionTranslationFilter'에서 메시지를 볼 수 있습니다. 그 직후에 "Redirecting to"다음에 URL이옵니다. –

답변

1

@ Luke Taylor 및 @axtavt에게 큰 감사 - 내 오류가 뿌리 '/'가 누락되었습니다.

<sec:http auto-config="true" use-expressions="true"> 
    <sec:intercept-url pattern="/ui/Login" 
         access="IS_AUTHENTICATED_ANONYMOUSLY"/> 

'/'가 표시되면 # {servletContext.contextPath}가 올바르게 시작됩니다.