CQ5.6 - 启用保护页面的CUG会破坏其他组件

时间:2015-11-19 15:47:58

标签: cq5 aem

我们在现有网站(近700页)中实现了像geometrixx网站这样的登录功能。

我们希望仅向登录用户显示受保护的页面,每个注册的用户都被分配一个组/ CUG可以说"列出的用户"。

现在在页面层次结构中我有产品页面,在产品页面下我有8个产品pages.somewhere在主页上我有一个导航栏组件,它可以获取所有产品子页面并显示一个包含8个条目的左侧导航栏。

如果我以只有"列出的用户"的方式启用CUG应该可以访问8个产品页面中的2个,任何对直接链接的访问都会被重定向到登录页面。哪个没问题。

但是之前用于显示所有8个产品页面的导航栏组件现在只显示6页。

将页面置于登录后面的主要思想是生成潜在客户。因此,如果未登录的用户没有看到链接本身,他们会点击哪里重定向到登录页面,然后感觉就像在我们的网站注册。

要求是我现有的导航栏应该继续显示8个链接,点击2个受保护的页面链接,他应该获得登录/注册选项。

我们正在使用大部分开箱即用的东西。

任何帮助我们如何实现这一目标的指针都会有很大帮助? PS 我已经将导航栏作为现有网站中影响的一个此类组件,因此可能会有更多组件从网站层次结构中获取其内容,并且在这种情况下有机会被破坏。

3 个答案:

答案 0 :(得分:0)

导航栏可以按页面结构选取所有子页面。这不应该限制导航栏上的页面标题显示。

对于页面,可以通过添加“列出的用户”来控制模板级页面属性的访问权限。那边的小组。在jsp中,如果用户是“列出的用户”的成员,则可以对用户进行初步检查。否则重定向到登录页面

希望有所帮助

答案 1 :(得分:0)

涉及两个实体,JCR和Sling。默认情况下,任何未经身份验证的请求都与名为Anonymous的用户相关联,JCR会话将具有与匿名关联的ACL。

在JCR中,如果用户无权访问节点,则该会话将不会看到这些节点。我们通过Sling访问JCR,默认情况下,如果您没有权限,请求将导致404错误(因为对于底层JCR会话,资源不存在)。可以明确指示吊索请求对特定路径进行身份验证。

利用这些概念的组合来创建CUG功能。指示Sling强制对启用CUG的页面进行身份验证。指示JCR仅为具有访问权限的用户显示这些节点。

如果您在没有登录的情况下直接请求产品页面,则会将您重定向到登录页面。当您的导航组件循环遍历节点以创建匿名用户的菜单时,JCR仅显示6页,因为其他两个页面是匿名的。

解决此问题的唯一方法是使导航组件可配置。内容作者必须配置网址和页面标题,而不是节点迭代,以便链接显示给每个人。

  • 您可以忽略与请求关联的会话,并使用可以访问所有产品页面的自定义JCR会话,但这样会忽略ACL而您不希望这样做。

答案 2 :(得分:0)

感谢您的所有建议 以下是我们最终如何做到这一点。 - 使用适当的CUG保护要启用CUG的页面。 - 在导航中隐藏页面。 - 在同一层次结构中创建一个重定向页面,其标题与您想要保护的页面相同。将其重定向到受保护的页面。