1

我想在我的 JSF 应用程序中使用Apache Shiro来执行基于 URL 的授权检查,在 shiro.ini 中完成配置正如我在Shiro 文档中看到的那样,有一种方法可以使用“perms”过滤器

/remoting/rpc/** = authc, perms["remote:invoke"]

在我的场景中,我想要这个功能,但是在 entity-level 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?或者这应该通过调用 FacesContext 在我的 Realm-Implementation 中完成吗?

1这至少可以通过编程方式完成:

SecurityUtils.getSubject().isPermitted("printer:query:lp7200")

https://shiro.apache.org/permissions.html

4

1 回答 1

3

可以通过在软件中实现和使用自己的“org.apache.shiro.web.filter.AccessControlFilter”子类来做到这一点。这个自己的类可以在 shiro.ini 中声明:

[main]
user = filter.FooFilter

AccessControlFilter 类提供了“isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue)”方法,可以覆盖该方法以使用“request.getParameterMap()”来获取 HTTP-GET 参数。

例如,你可以看看我的项目提拉米苏(相当过时)。请参阅WEB-INF/shiro.ini中包含的CompanyManagerPermissionsFilter(它扩展了CompanyScopedPermissionsFilter,它扩展了DomainPermissionsFilter)。

于 2013-02-12T07:50:37.213 回答