4
我开始使用JSF 2.0和PrimeFaces的Web应用程序项目。其中一个要求是根据用户角色显示不同的页面内容。例如。只有管理员应该看到菜单项 - 用户管理。JSF - 基于角色的页面显示
安全方面,我会去春季安全。
这怎么能以优雅的方式实现?我应该为每个人制作一个xhtml模板,然后使用特定于角色的UI项目为每个角色创建不同的页面?
谢谢
我开始使用JSF 2.0和PrimeFaces的Web应用程序项目。其中一个要求是根据用户角色显示不同的页面内容。例如。只有管理员应该看到菜单项 - 用户管理。JSF - 基于角色的页面显示
安全方面,我会去春季安全。
这怎么能以优雅的方式实现?我应该为每个人制作一个xhtml模板,然后使用特定于角色的UI项目为每个角色创建不同的页面?
谢谢
只需使用组件的属性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')" />
虽然正确,这并不阻止用户直接输入网址。总是使用web.xml来描述哪些角色可以访问哪些页面。并为您的业务层增加安全性。默默无闻的安全行不通。 – SJuan76
我不认为它在这个问题的范围内,但我已经添加了关于如何解决用户直接访问URL的情况的附加信息。 –