如何在用户未登录时保护网页

时间:2010-12-07 16:05:43

标签: java security jsf

我有一些XHTML页面。当我运行项目时,即使我没有登录,我也可以查看该页面。当我直接在地址栏中输入时,我可以访问该页面。

如何保护除login.xhtml以外的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时访问。如何在离线浏览或未登录时保护它。

1 个答案:

答案 0 :(得分:2)

  

我尝试向FacesConfig添加安全约束,但它会阻止我的所有*.xhtml甚至login.xhtml

faces-config.xml没有安全约束的概念。可能你会对web.xml感到困惑。您需要使安全约束的url-pattern更具体。不要使用*.xhtml,而是使用/secured/*左右,并将受限制的文件放在该文件夹中(当然需要login.xhtml文件)。

除此之外,您可能希望指示浏览器缓存这些页面。您可以通过映射到同一Filter的{​​{1}}来实现此目的,并在url-pattern方法中执行以下操作:

doFilter()

这样,最终用户将无法从浏览器缓存中查看该页面。在测试之前不要忘记清除浏览器缓存。