我正在使用 JSF 2.0 和 PrimeFaces 开始一个 Web 应用程序项目。其中一项要求是根据用户角色显示不同的页面内容。例如,只有管理员才能看到菜单项 - 用户管理。
安全方面,我会选择 Spring 安全性。
如何以优雅的方式实现这一目标?我应该为每个人制作一个 xhtml 模板,然后使用特定于角色的 UI 项为每个角色创建不同的页面吗?
谢谢
我正在使用 JSF 2.0 和 PrimeFaces 开始一个 Web 应用程序项目。其中一项要求是根据用户角色显示不同的页面内容。例如,只有管理员才能看到菜单项 - 用户管理。
安全方面,我会选择 Spring 安全性。
如何以优雅的方式实现这一目标?我应该为每个人制作一个 xhtml 模板,然后使用特定于角色的 UI 项为每个角色创建不同的页面吗?
谢谢
只需在组件中使用属性rendered
+ 角色检查,例如子菜单:
<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”在 Spring 中定义的角色。我认为这很优雅。
要禁用该 pafe (或一组页面)的导航,您仍然需要在您spring-security.xml
的示例中添加一个拦截:
<intercept-url pattern="/pages/*Role*" access="hasRole('INTERNO')" />