防止用户角色执行某个操作。
- 示例1:只有"管理员"角色被允许执行销毁操作。
- 示例2:除了"guest"以外的任何角色都可以执行创建操作。
在一个实际情况中,我有这样一个需求:
public String delete() {
if(FacesContext.getCurrentInstance().getExternalContext().isUserInRole("administrator"){
//.....the action to perform
}
return "Denied";
}
我希望我能够在使用ManagedBeans的情况下使用EJB的注释@RolesAllowed()
。所以问题是:有没有办法同时使用多个角色?是否有解决方法!
例如:如果一个操作必须允许3个角色(管理员,版主,经理),我必须这样做:
if (FacesContext.getCurrentInstance().getExternalContext().isUserInRole("administrator")
|| FacesContext.getCurrentInstance().getExternalContext().isUserInRole("manager")
|| .....) {
//....
}
而且要在所有方法上重现这种问题是一件很麻烦的事情。有几百种方法:(
#{facesContext.externalContext.isUserInRole('administrator')}
更简洁 :) 如果您需要在同一视图中多次重复相同的条件,则还可以使用<ui:param>
给它一个别名。请参见更新后的答案。 - BalusC