Apache shiro如何根据其方法过滤api?

时间:2013-06-25 11:07:48

标签: apache filter shiro

我在我的项目中使用Apache shiro。它提供了一些过滤网址的默认过滤器。现在我遇到了关于过滤网址的问题。如果有像'/ rest / user / info'这样的API,如果它的方法是 GET,这个api可以被任何人访问,但如果它是POST,它只是可以由管理员访问。我发现dafault过滤器“休息”但它没有任何帮助。有人能提出一些建议吗?谢谢。

1 个答案:

答案 0 :(得分:0)

配置如下:

<property name="filterChainDefinitions">
  <value>
     /login = authc
     /logout = logout
     /rest/user/info = rest[user:info]
  </value>
</property>
  1. post / rest / user / info needs perms [user:info:create]
  2. get / rest / user / info needs perms [user:info:read]
  3. ...

  4. 给予管理员权限[user:info:create]和perms [user:info:read],仅为其他人提供权限[user:info:read]。在Realm的doGetAuthorizationInfo方法中设置用户的权限。

    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
            SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
            info.addStringPermission("user:info:create");
            info.addStringPermission("user:info:read");
            return info;
        }