2011-02-24 88 views
4

在我的web.xml我用的是這樣的:被阻擋除了那些以/開始面臨/安全約束和歡迎文件

<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>Block all</web-resource-name> 
    <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint /> 
</security-constraint> 

<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>Allow facelets</web-resource-name> 
    <url-pattern>/faces/*</url-pattern> 
    <http-method>POST</http-method> 
    <http-method>GET</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
    <role-name>*</role-name> 
    </auth-constraint> 
</security-constraint> 

所有傳入的請求。 我這樣做是因爲,否則,未經授權的用戶可以訪問facelets源文件。

它工作正常,但它不顯示歡迎文件,因爲即使根路徑被阻止。 我試圖添加<url-pattern>/</url-pattern>到第二個安全約束,但沒有。

+0

我是唯一一個有這種問題的人!有沒有其他方法來保護facelets源文件? – Alf 2011-03-01 18:24:59

回答

1

如果可以,請改爲在後綴模式上映射FacesServlet。當你還在使用JSF 1.x時,將它映射到*.jsf。然後,您可以使用該安全約束阻止訪問*.xhtml。當您已經使用JSF 2.0時(您的問題歷史證實了這一點),只需將其映射到*.xhtml即可。與JSF 1.x相反,FacesServlet不會以無限循環運行。這樣你根本不需要任何安全約束。唯一的缺點是,如果不涉及FacesServlet,您將無法提供「普通香草」XHTML文件。但是這樣做不會有任何意義,無論如何這樣的文件必須作爲*.html

PS:感謝你們提供了另一個原因/faces/*前綴模式吮吸;)

0

它工作正常,但因爲即使是根 路徑被阻擋它不顯示歡迎文件。我試圖添加/第二個 安全約束但沒有。

在這種情況下,它應該已經工作。我在我的機器上測試過它,它第一次不起作用。直到我們重新啓動應用程序服務器。那麼它的行爲如預期。

+0

呵呵,我們更新了我們的web.xml:我們的 /index.xhtml,我們更新到 index.xhtml SDReyes 2012-05-22 14:58:56