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