【问题标题】:Apache Shiro, INI-Configuration, Perms per URL: How to get URL params?Apache Shiro,INI 配置,每个 URL 的权限:如何获取 URL 参数?
【发布时间】:2012-10-20 07:34:49
【问题描述】:

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

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

在我的场景中,我想要这个功能,但是在 entity-level1 上,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-Implementation 中完成,具体通过调用 FacesContext 来完成?

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

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

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

【问题讨论】:

    标签: jsf authorization shiro


    【解决方案1】:

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

    [main]
    user = filter.FooFilter
    

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

    例如,你可以看看我的项目tiramisu(相当过时)。 参见CompanyManagerPermissionsFilter(扩展CompanyScopedPermissionsFilter,扩展DomainPermissionsFilter),包含在WEB-INF/shiro.ini中。

    【讨论】:

      猜你喜欢
      • 2016-09-28
      • 2013-02-26
      • 2013-09-03
      • 2020-05-30
      • 1970-01-01
      • 2017-07-27
      • 2013-11-10
      • 1970-01-01
      • 2011-07-12
      相关资源
      最近更新 更多