【问题标题】:How can attribute-level permissions be defined in Apache Shiro如何在 Apache Shiro 中定义属性级权限
【发布时间】:2013-10-13 04:55:20
【问题描述】:

docs 我读到可以定义属性级别的权限(以及资源​​和实例级别)

属性级别 - 权限现在指定实例或资源的属性。用户可以编辑 IBM 客户记录中的地址。

如何使用 Shiro 中通常定义权限的<resource>:<action>:<instance> 格式以声明方式定义这些权限?如果可以做类似<resource>:<action>:<instance>:<attributename> 的事情,这似乎是合乎逻辑的,但我在任何地方都找不到讨论这个问题的文档。

【问题讨论】:

    标签: shiro


    【解决方案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())以及将这些权限添加给用户的方式。我们已经围绕它编写了自定义代码。所以我们根据自己的逻辑构造权限字符串来进行属性检查。
    猜你喜欢
    • 2017-06-14
    • 2015-01-24
    • 2016-09-28
    • 2011-07-12
    • 2021-07-30
    • 2013-04-26
    • 2016-03-12
    • 2020-05-13
    • 2013-07-27
    相关资源
    最近更新 更多