2011-07-04 16 views
3

當前正在使用:JBoss 6(在GlassFish 3.1上開發),JSF 2.0,使用JAAS進行基於表單的身份驗證(無需「公共」頁面,所有內容都需要身份驗證)。取決於用戶角色的JSF 2頁訪問

Web應用程序提供了兩種不同的搜索頁面(如search1.jsfsearch2.jsf),從index.jsf訪問,但它不屬於額外的權利的特別角色的用戶,必須search2.jsf無法訪問。

保護search2.jsf的「標準」方式是web.xml中的配置,該配置需要此頁面的特殊用戶角色。是否有其他方法可以動態保護第二個搜索頁面,既可以基於角色,也可以基於特定於用戶的屬性(不會引入其他身份驗證框架或特定於容器的功能)?

禁用index.jsf中指向search2.jsf的鏈接很簡單,但用戶可以在瀏覽器中輸入第二個搜索頁面的URL以查看它(因此對於原型,我將調整web.xml)。

回答

4

是動態保護第二搜索頁面有其他的方式,無論是基於角色或基於用戶特定的屬性,不會引入額外的認證框架或特定容器的功能?

您可以在<ui:include>中使用EL。根據用戶角色創建公共主文頁search.xhtml,其中包括search1.xhtmlsearch2.xhtml

E.g.

<ui:include src="/WEB-INF/search#{request.isUserInRole('admin') ? 1 : 2}.xhtml" /> 

(這其中包括文件放在/WEB-INF使得客戶端不能直接索取)

然後由剛search.xhtml而不是打開網頁。