我最近用JSP开发了一个tomcat web应用程序,它使用与公司的Active Directory绑定的声明性安全(server.xml/web.xml)。我被要求为这个羽翼未丰的项目添加JSF支持。将登录表单转换为jsf是一件简单的事情,而且安全模型仍然有效。
一位同事问我是否可以允许更广泛的受众查看其中一个报告,但仅为较小的组呈现操作按钮。作为JSF的新手,我不得不做一些研究。
我花了大约四个小时在谷歌上搜索"jsf按钮安全性“和"jsf按钮权限”,并尝试了各种建议,这些建议大多是死胡同。另一位同事建议使用Spring安全模型,但如果有更简单的方法,我不想处理一大堆Spring库。
最终,我偶然发现了答案,这是非常简单的。我只需要使用HttpServletRequest方法: isUserInRole()来确定当前登录的用户是否具有查看操作按钮的权限。在过去的十年里,我用过很多次HttpServletRequests,但我不记得我曾经学习过这种方法。使用jsf,实现该方法非常简单,如下所示:
public boolean isUserInRole(String role) {
return (FacesContext.getCurrentInstance().getExternalContext().isUserInRole(role));
}我的问题特别是:这种方法有没有我应该知道的陷阱,还有其他更简单的方法吗?
发布于 2012-06-22 23:32:27
如果您使用Tomahawk作为JSF实现的插件,那么大多数控件都有一个visibleOnUserRole属性。您可以在值中使用多个角色名称。
https://stackoverflow.com/questions/10763828
复制相似问题