2012-06-27 40 views
3

我们有一个外部身份管理系统,必须使用Sling和REST来管理CQ5中用户的生命周期。通过吊索重命名用户

我们能够创建和删除用户和组

我们的问题是,我们没有找到出去怎么样将用户(或组)重命名为

我们如何重命名用户?

我们发现的唯一的解决办法是

  1. 列表中的用户
  2. 删除用户
  3. 创建一个新用户的所有组成员
  4. 重新创建所有的组成员

虽然这个解决方案可以工作,但很可能会造成一些性能问题(我们h超过7万用户和超过15万组)。如果这是唯一的解决方案:我们如何通过REST高效地执行第一步(列出所有成员资格)

回答

1

知道这不能解决您的问题,但仅仅指出通过REST进行重命名似乎成为一个不走的路。 docs似乎相当明确:

jackrabbit-usermanager捆绑提供了一个REST接口来创建,更新和删除JCR中的用户和组。

要更新现有的用户POST到/system/userManager/user/username.update ..请求不能更新的用户名或密码(见下文更改密码)唯一的附加属性更新通过这个URL。

虽然在同一页上,它似乎是针对特定用户的查询应该带回他们组成员:

$ curl http://localhost:8080/system/userManager/user/admin.tidy.1.json 

{ 
    "memberOf": [], 
    "declaredMemberOf": [] 
} 

不知道CQ锁定了获取用户信息的这种方式。

+0

谢谢,看来CQ的行为就是这样。我们将不得不选择删除/创建选项。这对于许多用户和资源来说并不理想。我们也在考虑通过权限组(而不是直接)授予权限。因此,在删除组时,我们只需查看组成员资格(而不是ACL) – Matteo

+0

请注意,Sling是一个Apache项目,您可以查看这些函数的源代码,并可能提出改进建议以帮助您用例。我不知道如果“不重命名”是Sling限制或与下层绑定的某些事物,但可能值得一看。 –