0

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

4

1 回答 1

0

像这样配置:

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

给管理员权限[用户:信息:创建]和权限[用户:信息:读取],只给其他人权限[用户:信息:读取]。在 Realm 的 doGetAuthorizationInfo 方法中设置用户的权限。

protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
        SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
        info.addStringPermission("user:info:create");
        info.addStringPermission("user:info:read");
        return info;
    }
于 2013-06-27T05:36:37.083 回答