Apache Shiro 权限:如何实现任何权限检查

时间:2021-05-08 00:02:12

标签: shiro

我有以下权限列表:

book:download:red,
book:download:blue,
book:download:green

现在,我想检查主题是否设置了任何这些权限。如果至少存在其中之一,则 - 允许。

所以,在我的 REST 控制器上,我用值来打这个注解:

@RequiresPermissions(value = book:download:*)

这意味着在我的情况下,对象至少有一本可以下载的有效书籍,让他进来!

但是,令我惊讶的是,我得到了 403:

Subject does not have permission [book:download:*]

我希望 Shiro 使用这个通配符并将它与提交的许可进行比较,比如 REGEX 检查。结果是 - 允许访问。

如果我的理解有误,请指正。有没有办法实现我在这里要求的内容?

1 个答案:

答案 0 :(得分:0)

换个角度考虑匹配,您的资源具有特定权限“book:download:red”,您的用户可以下载任何图书,因为他们拥有更一般的权限 book:downloadbook:download:* (或相同的特定 red 权限)

您还可以将注释配置为使用逻辑“OR”,您可以在其中使用 redbluegreen 列表 https://shiro.apache.org/static/1.7.1/apidocs/org/apache/shiro/authz/annotation/RequiresPermissions.html

查看更多:https://shiro.apache.org/permissions.html

相关问题