2011-12-09 70 views
2

我們正在開發「盒子」網絡產品,所以我無法預見部署應用程序的環境。此應用程序使用彈簧安全。但它似乎如果Tomcat應用程序放置在沒有根,然後下面的配置失敗:在spring security中指定可變上下文路徑(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}開始正常工作。

相關問題