【问题标题】:UUID for a page content in AEM across author and it's associated publish servers are differentAEM 中跨作者的页面内容的 UUID 及其关联的发布服务器不同
【发布时间】:2021-07-01 19:49:08
【问题描述】:

一个带有 UUID(jcr:uuid) 的作者页面被激活,其内容被复制到 3 个关联的发布服务器上。 所有 3 个发布服务器中可用的内容具有不同的 UUID。那么,考虑到 AEM 上所有 4 个实例的相同内容(1 个作者 + 3 个发布),如何与独特的东西相关联?

我正在实施一个解决方案,我需要关联一个唯一 ID,该 ID 可以跨所有实例映射到单个内容。

到目前为止我尝试过的方法:

  1. 使用内容路径 - 通过删除路径中的“/”和“-”来生成唯一 ID。 面临的问题 - 对于某些路径,这可能超过 128 个字符,这是服务接受唯一 ID 的限制。

  2. 如果我以编程方式生成一个唯一 ID,它将起作用,但我如何尝试使用它来跟踪后面的内容?因为我无法将这个以编程方式创建的 id 存储在 jcr:content 上并激活页面。 问题 - 如果我复制页面,它也会更改激活日期 - 这也是内容的重要元数据。

对于用例来说,最可行的解决方案是什么?请提供建议和可能的解决方案。

【问题讨论】:

    标签: aem uuid hashcode jcr hash-code-uniqueness


    【解决方案1】:

    您可以使用内容路径的哈希值。获取哈希的最简单方法是使用hashCode()。为紧凑起见,请使用哈希字节的 Base64 表示,并在预定数量的字符后截断。

    【讨论】:

    • 为每个页面创建一个唯一的id,如果我们截断使用路径创建的hash值,会不会有2个不同的页面路径可以有相同的唯一id的场景?如果默认情况下它总是小于 128 个字符,那么实现就可以了。
    • 参考网上的一些理论,2个不同的字符串值(页面路径)可以有相同的hash值。在这种情况下,此解决方案可能会失败,因为我可以覆盖一个页面的元数据映射到另一个页面的哈希码。
    • 许多哈希实现为您提供 128 位 - 远少于 128 个字符。即使您采用 SHA-512,它为您提供 512 位(64 字节),您将有足够的空间剩余。 Base64 的开销为 33%,因此散列长度为 86 个字符。另外,是的,哈希冲突是一回事,但除非您特别担心攻击(并且正在对攻击者控制的数据进行哈希处理),否则它们不太可能(尤其是对于像 jcr 路径这样的合理短字符串),您不需要担心自己他们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多