当前使用:JBoss 6(在GlassFish 3.1上开发(,JSF 2.0,使用JAAS的基于表单的身份验证(没有"公共"页面,一切都需要身份验证(。
web应用程序提供两个不同的搜索页面(如search1.jsf
和search2.jsf
(,可从index.jsf
访问,但对于不属于具有附加权限的特殊角色的用户,search2.jsf必须不可访问。
保护search2.jsf的"标准"方法是web.xml
中的一个配置,该配置需要此页面的特殊用户角色。是否有其他方法可以动态保护第二个搜索页面,无论是基于角色还是基于用户特定属性,都不会引入额外的身份验证框架或特定于容器的功能?
禁用index.jsf中指向search2.jsf的链接很容易,但用户可以在浏览器中输入第二个搜索页面的URL来查看它(因此对于原型,我将调整web.xml(。
是否有其他方法可以根据角色或用户特定属性动态保护第二个搜索页面,而不引入额外的身份验证框架或容器特定功能
您可以在<ui:include>
中使用EL。根据用户角色创建一个包含search1.xhtml
或search2.xhtml
的公共主控search.xhtml
页面。
例如
<ui:include src="/WEB-INF/search#{request.isUserInRole('admin') ? 1 : 2}.xhtml" />
(这些包含文件放在/WEB-INF
中,因此客户端无法直接请求(
然后用search.xhtml
打开页面。