2011-12-09 7 views
2

私たちは "ボックス" Web製品を開発しているので、アプリケーションが配備される環境は予測できません。このアプリケーションはスプリングセキュリティを使用しています。しかし、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'に追加されていると確信しています。どのバージョンのSpring Securityを使用していますか? – 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からメッセージを参照する必要があります。その直後に「リダイレクト先」に続いて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}が正しく動作します。

関連する問題