我有一些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
时访问。如何在离线浏览或未登录时保护它。
答案 0 :(得分:2)
我尝试向FacesConfig添加安全约束,但它会阻止我的所有
*.xhtml
甚至login.xhtml
faces-config.xml
没有安全约束的概念。可能你会对web.xml
感到困惑。您需要使安全约束的url-pattern
更具体。不要使用*.xhtml
,而是使用/secured/*
左右,并将受限制的文件放在该文件夹中(当然需要login.xhtml
文件)。
除此之外,您可能希望指示浏览器不缓存这些页面。您可以通过映射到同一Filter
的{{1}}来实现此目的,并在url-pattern
方法中执行以下操作:
doFilter()
这样,最终用户将无法从浏览器缓存中查看该页面。在测试之前不要忘记清除浏览器缓存。