【发布时间】:2014-06-16 22:24:12
【问题描述】:
我正在使用 Shiro 重构 webapp 的安全模块,但在多身份验证过滤器的逻辑操作上遇到了问题。
例如文章实体。每个人都可以发布新文章,但只有文章所有者/创建者或系统管理员角色可以修改现有文章。
为此,我创建了一个OwnerAuthzFilter(扩展org.apache.shiro.web.filter.authz.AuthorizationFilter)来检查当前用户是否是实体的创建者。
我想在shiro.ini 的[urls] 部分配置限制,比如
[main]
ownerOf = my.OwnerAuthzFilter
[urls]
#ownerOf checks if a user is owner of entity "article" with request parameter "id"
/article/update*=authc, ownerOf["article","id"] OR roles["admin"]
Shiro 似乎没有提供 url 过滤器的逻辑表达式。它的Logical 仅适用于注解,并且仅适用于注解和相同类型的过滤器(如 RequiresRoles、RequiresPermissions)。
就我而言,我需要通过检查自定义OwnerAuthzFilter 和内置RolesAuthorizationFilter 的逻辑或结果来授权操作。
任何机构都有提示如何实现这一点?
【问题讨论】: