2010-12-07 35 views
0

我有一些XHTML頁面。當我運行項目時,即使我沒有登錄,我也可以查看該頁面。當我直接在地址欄中鍵入內容時,我可以訪問該頁面。如何在用戶未登錄時確保網頁的安全

如何保護我的XHTML文件(login.xhtml除外)?我試圖給FacesConfig添加一個安全約束,但它會阻止我的所有*.xhtml,即使是login.xhtml


更新

我說這對我的web.xml文件

<security-constraint> 
    <display-name>Protection</display-name> 
    <web-resource-collection> 
     <web-resource-name>Protection</web-resource-name> 
     <description>Protection</description> 
     <url-pattern>/secured/*</url-pattern> 
    </web-resource-collection> 
</security-constraint> 

我把我所有的文件預計login.xhtml/secure文件夾中。

但是當我運行該項目時,我可以隨時訪問,當我在地址欄中鍵入.../secured/*.jsf。如何保護它,當我離線瀏覽或者沒有登錄。

回答

2

,我打算給安全約束添加到FacesConfig但它阻止所有我*.xhtml甚至login.xhtml

faces-config.xml有沒有安全約束的概念。可能你對web.xml感到困惑。您需要使安全約束的url-pattern更具體。不要使用*.xhtml,但可以使用/secured/*左右,然後將受限制的文件放在該文件夾中(當然需要login.xhtml文件)。

除此之外,您可能要指示瀏覽器而不是緩存這些頁面。您可以通過它映射在同一url-pattern並不會在doFilter()方法如下一個Filter實現這一目標:

HttpServletResponse hsr = (HttpServletResponse) response; 
hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
hsr.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
hsr.setDateHeader("Expires", 0); // Proxies. 
chain.doFilter(request, response); 

這樣,最終用戶將無法從瀏覽器緩存查看頁面。測試之前,請不要忘記清除瀏覽器緩存。

+0

對不起!我的意思是web.xml。 – Steffi 2010-12-07 20:54:10

相關問題