允许访问某种类型的资源,但拒绝访问Apache Shiro中特定的资源实例

时间:2014-04-11 21:10:45

标签: authorization shiro

我有一个关于允许访问资源但是拒绝访问Apache Shiro中此资源的某些实例的问题。

假设我有一个资源可以查看或编辑的报告以及两个用户Tom和Katie。

如果我在Shiro中没有弄错,我可以通过授予Tom以下权限来授权Tom编辑所有报告:

"报告:编辑"

Katie还应该能够编辑除了报告x之外的所有报告,而这些报告只能查看。

所以我想表达这样的话:

"报告:编辑" "报告:视图:X"

据我所知,来自Shiro的一切都是关于许可权限的,这可以表示为"报告:编辑:y,z,..."和"报告:查看:x"但是如果你有很多报道,它就不太实用或不易读。

有关如何在Shiro或使用其他方法实现这一目标的任何建议吗?

谢谢你, 乔尔

1 个答案:

答案 0 :(得分:1)

您可以创建WildcardPermission类的子类,并实现自己的implies方法来编写自己的拒绝实现。

覆盖WildcardPermissionResolver以返回您的权限实现而不是标准实现。

然后您可以将其配置为在shiro.ini中全局使用:

globalPermissionResolver = com.foo.bar.authz.MyPermissionResolver

请参阅此处的文档:https://shiro.apache.org/authorization.html#Authorization-Configuringaglobal%7B%7BPermissionResolver%7D%7D