0

プロジェクトで Apache shiro を使用しています。URL をフィルタリングするためのデフォルト フィルタがいくつか用意されています。URLのフィルタリングに関する問題に遭遇しました。「/rest/user/info」のような API がある場合、そのメソッドが GET の場合、この API には誰でもアクセスできますが、POST の場合は管理者だけがアクセスできます。デフォルトフィルター「rest」を見つけましたが、何の役にも立ちません。誰でもアドバイスできますか?ありがとう。

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 needs perms[user:info:create]
  2. get /rest/user/info は perms[user:info:read] が必要です
  3. ...

管理者には [user:info:create] と perms[user:info:read] を与え、他の人には perms[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;
    }
于 2013-06-27T05:36:37.083 に答える