如何在 Apache Shiro 中定义属性级权限
Posted
技术标签:
【中文标题】如何在 Apache Shiro 中定义属性级权限【英文标题】:How can attribute-level permissions be defined in Apache Shiro 【发布时间】:2013-10-13 04:55:20 【问题描述】:从docs 我读到可以定义属性级别的权限(以及资源和实例级别)
属性级别 - 权限现在指定实例或资源的属性。用户可以编辑 IBM 客户记录中的地址。
如何使用 Shiro 中通常定义权限的<resource>:<action>:<instance>
格式以声明方式定义这些权限?如果可以做类似<resource>:<action>:<instance>:<attributename>
的事情,这似乎是合乎逻辑的,但我在任何地方都找不到讨论这个问题的文档。
【问题讨论】:
【参考方案1】:你检查http://shiro.apache.org/permissions.html了吗?
您可以根据自己的信息自己创建字符串。在我们的代码中,我们使用自定义领域以编程方式添加权限,如下所示:
public class OurAuthorizingReam extends AuthorizingRealm
...
@Override
public AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals)
... code to find permission infp
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
while (.. looping through permission info)
info.addStringPermission(... the permission string constructed);
return info;
【讨论】:
我确实多次阅读提供的页面,但没有关于属性权限的内容。你能告诉我你的自定义代码是做什么的吗?您是否必须编写自己的代码来将字符串权限链接到可以读取/写入资源的哪些属性,或者 Shiro 是否提供了一些您可以利用的中间件? shiro 唯一能做的就是告诉你用户是否有特定的权限(Subject.isPermitted())以及将这些权限添加给用户的方式。我们已经围绕它编写了自定义代码。所以我们根据自己的逻辑构造权限字符串来进行属性检查。以上是关于如何在 Apache Shiro 中定义属性级权限的主要内容,如果未能解决你的问题,请参考以下文章