我想在我的JSF-Application中使用Apache Shiro来执行基于URL的授权检查,在shiro.ini中完成配置正如我在Shiro-documentation中看到的,有一种方法可以使用“perms” “-filter
/remoting/rpc/** = authc, perms["remote:invoke"]
在我的场景中,我想要这个功能,但是在实体级1上,其中entity-Id在http-request中
# "Open settings for user with id=123":
# /user/settings.xhtml?user_id=123
/user/settings.xhtml = perms["user:update:XXX"]
那么,我如何用Shiro做到这一点?如何告诉perms-filter检查http-params?或者这应该在我的Realm-Implemenation中完成,具体是通过调用FacesContext?
1这可以至少以编程方式完成:
SecurityUtils.getSubject().isPermitted("printer:query:lp7200")
答案 0 :(得分:3)
It is possible通过在软件中实现和使用自己的“org.apache.shiro.web.filter.AccessControlFilter”子类来完成此操作。这个自己的类可以在shiro.ini中声明:
[main]
user = filter.FooFilter
AccessControlFilter-class提供了“isAccessAllowed(ServletRequest请求,ServletResponse响应,Object mappedValue)”方法,可以重写该方法以使用“request.getParameterMap()”获取HTTP-GET参数。
举个例子,你可以看一下我的项目tiramisu(已经过时了)。 请参阅CompanyManagerPermissionsFilter中包含的CompanyScopedPermissionsFilter(扩展DomainPermissionsFilter,扩展WEB-INF/shiro.ini)。