聆听吊索用户和群组的变化

时间:2012-07-11 14:12:52

标签: jackrabbit sling

我希望收到sling的userManager中用户或组发生更改时的通知。例如,当创建新组时,我需要在/ content下创建一个具有相同名称的新节点。创建新用户时,我想给他们/ content / foo的写权限。删除对象时的类似tearDown步骤。

我尝试注册EventHandler(org.osgi.service.event.EventHandler),将event.topics设置为“*”(所有主题),但这只捕获了资源更改而不是userManager更改,因为用户和组是合成的资源(我认为)

我尝试使用org.apache.sling.api.request.SlingRequestListener,但是SlingRequestEvent没有提供任何可以帮助我区分请求的信息(或者我不知道如何)。此外,我不确定这是否甚至可以用于需要在处理请求后调用的回调。

我已将Filters用于different issue,我也尝试将其用于此目的。但它们有其局限性 - 我的过滤器在请求之前被调用,因此在决定采取行动之前,不可能知道请求是否会导致SUCCESS。

有关如何倾听和回应吊索用户和群组模型变化的任何建议?

1 个答案:

答案 0 :(得分:1)

https://issues.apache.org/jira/browse/SLING-977 Ian Boston建议使用SlingPostProcessor服务来通知对用户管理的POST servlet的调用。

我自己没有尝试过,如果你这样做,你可能会错过通过Sling的用户管理API完成的更改 - 但这可能足够好,具体取决于你的用例。

除此之外,我认为目前没有一种可靠的方法可以通知这些变化。要在Sling中实现它,我们需要包装org.apache.jackrabbit.api.security.user。*对象(Group,User,UserManager)以在发生更改时发送事件。当然可行,但需要更改Sling捆绑包。