2012-10-04 92 views
4

我開始使用JSF 2.0和PrimeFaces的Web應用程序項目。其中一個要求是根據用戶角色顯示不同的頁面內容。例如。只有管​​理員應該看到菜單項 - 用戶管理。JSF - 基於角色的頁面顯示

安全方面,我會去春季安全。

這怎麼能以優雅的方式實現?我應該爲每個人製作一個xhtml模板,然後使用特定於角色的UI項目爲每個角色創建不同的頁面?

謝謝

回答

10

只需使用組件的屬性rendered +角色檢查,例如用於子菜單:在Spring中定義

<p:submenu label="#{msg['header.management']}" rendered="#{request.isUserInRole('INTERNO')}"> 
     <p:submenu label="#{msg['header.roles']}" icon="ui-icon-contact"> 
       <p:menuitem value="#{msg['header.newRole']}" url="/pages/addRole.jsf" /> 
      <p:menuitem value="#{msg['header.mngRoles']}" url="/pages/viewRole.jsf" /> 
</p:submenu> 

被 'INTERNO' 的作用。我認爲這非常優雅。

要爲pafe禁用導航(或一組網頁),你仍然要攔截添加到您的spring-security.xml例如:

<intercept-url pattern="/pages/*Role*" access="hasRole('INTERNO')" /> 
+0

雖然正確,這並不阻止用戶直接輸入網址。總是使用web.xml來描述哪些角色可以訪問哪些頁面。併爲您的業務層增加安全性。默默無聞的安全行不通。 – SJuan76

+0

我不認爲它在這個問題的範圍內,但我已經添加了關於如何解決用戶直接訪問URL的情況的附加信息。 –