我最近在 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));
}
我的问题具体是:关于这种方法我应该注意什么问题,还有另一种更简单的方法吗?