2010-12-07 36 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

相关问题