リクエストが使用している HTTP メソッドに応じて、ロールベースの承認を行う方法を理解するのに苦労しています。私は HTTP 基本認証を使用しており、ユーザーの役割と使用される HTTP メソッドに応じて、要求が成功または失敗するはずです。
例:
- への GET リクエストは
http://localhost/rest/
、認証されていないユーザーに対しても常に許可する必要があります (匿名アクセス) - (同じリソース!)への PUT リクエストは、ユーザーが認証
http://localhost/rest/
されている場合にのみ許可されるべきです - (同じリソース!)への DELETE 要求は、ユーザーが認証され、ロール ADMINISTRATORを持っている
http://localhost/rest/
場合にのみ許可されるべきです
私の現在の(機能していない)設定の試みは次のshiro.ini
ようになります。
/rest = authcBasic[PUT], roles[SERVICE_PROVIDER]
/rest = authcBasic[POST], roles[EXPERIMENTER]
/rest = authcBasic[DELETE], roles[ADMINISTRATOR]
/rest = authcBasic
アップデート
https://issues.apache.org/jira/browse/SHIRO-107を見つけて、shiro.ini を次のように更新しました。
/rest/**:put = authcBasic, roles[SERVICE_PROVIDER]
/rest/**:post = authcBasic, roles[EXPERIMENTER]
/rest/**:delete = authcBasic, roles[ADMINISTRATOR]
/rest/** = authcBasic
しかし、それでも機能しません。最後のルールだけが一致するようです。また、コミットコメントは、これが許可ベースの承認でのみ機能することを示しているようです。ロールベースの認証に相当する実装はありませんか?