1

sling の userManager でユーザーまたはグループが変更されたときに通知を受け取りたいです。たとえば、新しいグループが作成された場合、/content の下に同じ名前の新しいノードを作成する必要があります。新しいユーザーが作成されたら、/content/foo への書き込み権限を付与したいと考えています。オブジェクトが削除されたときの同様のティアダウン手順。

event.topics を "*" (すべてのトピック) に設定して、EventHandler (org.osgi.service.event.EventHandler) を登録しようとしましたが、これはリソースの変更のみをキャプチャし、ユーザーとグループは合成リソースであるため、userManager の変更はキャプチャしませんでした (I考える)

org.apache.sling.api.request.SlingRequestListener を使用してみましたが、SlingRequestEvent には、リクエストを区別するのに役立つ情報が含まれていませんでした (または方法がわかりませんでした)。また、リクエストが処理された後に呼び出す必要があるコールバックにこれを使用できるかどうかもわかりません。

別の問題にフィルターを使用しましたが、この目的にもフィルターを適用してみました。ただし、それらには制限があります。私のフィルターはリクエストの前に呼び出されるため、アクションを実行することを決定する前に、リクエストが成功するかどうかを知ることはできません。

sling のユーザーおよびグループ モデルの変更をリッスンして対応する方法について何か提案はありますか?

4

1 に答える 1

1

https://issues.apache.org/jira/browse/SLING-977で、Ian Bostonは、SlingPostProcessor サービスを使用して、ユーザー管理の POST サーブレットへの呼び出しを通知することを提案しています。

私は自分で試したことはありませんが、試してみると、Sling のユーザー管理 API を介して行われた変更を見逃す可能性がありますが、ユースケースによってはそれで十分な場合があります。

それを除けば、現在、そのような変更を確実に通知する方法はないと思います。これを Sling に実装するには、org.apache.jackrabbit.api.security.user.* オブジェクト (Group、User、UserManager) をラップして、変更時にイベントを送信する必要があります。確かに実行可能ですが、その Sling バンドルを変更する必要があります。

于 2012-07-13T12:36:25.067 に答える