我有以下权限列表:
book:download:red,
book:download:blue,
book:download:green
现在,我想检查主题是否设置了任何这些权限。如果至少存在其中之一,则 - 允许。
所以,在我的 REST 控制器上,我用值来打这个注解:
@RequiresPermissions(value = book:download:*)
这意味着在我的情况下,对象至少有一本可以下载的有效书籍,让他进来!
但是,令我惊讶的是,我得到了 403:
Subject does not have permission [book:download:*]
我希望 Shiro 使用这个通配符并将它与提交的许可进行比较,比如 REGEX 检查。结果是 - 允许访问。
如果我的理解有误,请指正。有没有办法实现我在这里要求的内容?
答案 0 :(得分:0)
换个角度考虑匹配,您的资源具有特定权限“book:download:red
”,您的用户可以下载任何图书,因为他们拥有更一般的权限 book:download
或 book:download:*
(或相同的特定 red
权限)
您还可以将注释配置为使用逻辑“OR”,您可以在其中使用 red
、blue
或 green
列表
https://shiro.apache.org/static/1.7.1/apidocs/org/apache/shiro/authz/annotation/RequiresPermissions.html