2012-07-01 45 views
2

是否可以集成Spring Security 3和JSF 2,使JSF保持默認工作狀態,而不是在用戶導航時顯示新的url,保留舊的url,而不使用重定向 JSF屬性來瀏覽頁面?Spring Security 3和JSF 2集成不重定向頁面

我找不到關於此的文檔。我找到作者的所有文章在導航時重定向頁面。

感謝

+0

你能更明確的像一個例子嗎? – Ravi

+0

Spring使用該URL來檢查頁面是否安全。在JSF中默認情況下,當你點擊一個按鈕導航到另一個頁面時,URL不會改變 –

回答

1

默認情況下,FilterSecurityInterceptor將只執行一次,每個請求,沒有做安全再檢查,除非有在URL但JSP/JSF變化轉發頁面呈現爲響應到當前請求,瀏覽器中的url包含前一頁的地址。因此,只需在applicationContext的http元素中設置once-per-request屬性爲false,從而強制安全重新檢查。

<http auto-config="true" use-expressions="true" once-per-request="false"> 

,並在你的web.xml

<filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>REQUEST</dispatcher> 
</filter-mapping> 

更增加了工作springSecurityFilterChain過濾器映射轉發調度員info

另外,您還可以通過附加參數faces-啓用頁面重定向redirect = true如下:

<h:form> 
    <h:commandButton action="page1?faces-redirect=true" value="Page1" /> 
</h:form> 

但也請記住,在您的情況下GET請求看起來更合適,並且BalusC說它的而不是良好實踐使用POST爲可收藏的頁面到頁面導航。

因此,使用<h:link><h:button>或者使用faces-redirect = true也會導致GET請求。

另見:

+0

抱歉推遲測試它。它沒有奏效。我仍然需要使用faces-redirect = true來使安全工作。 –

+0

我會接受你的答案,但即使使用所有這些配置,我總是需要做page1?faces-redirect = true。 –

+0

是的Ed,我很抱歉,我會更廣泛地測試它,並用Spring打開一個bug。或者如果你認爲你已經做了足夠的研究,請在他們的網站上發佈一個錯誤,並讓我知道。 – Ravi

相關問題