如何在AEM中跨集群环境进行会话管理?

时间:2017-08-01 09:23:54

标签: aem httpsession

考虑以下情况:

我有两个发布服务器来处理调度程序后面的请求,该请求正在执行一些负载平衡机制,以循环方式在两个服务器之间分配请求。

使用案例

用户从登录页面输入登录凭据,然后点击“提交”。调度程序将请求定向到“发布服务器1”。成功验证后,会向客户端提供会话ID,相应的会话信息存储在“发布1”中。

用户点击另一个受保护的页面,但调度员将请求重定向到“发布服务器2”。没有会话信息对应的会话信息。

  

合理的结果会话重置,系统会提示用户重新登录。

如何处理此类要求?

  

注意:我的用户不在AEM中,正在通过数据库验证用户的真实性。

P.S。:我已经去过几个博客,说AEM不支持Http Session集群,但没有一个能为这个问题提供正确的解决方案。

3 个答案:

答案 0 :(得分:1)

一种替代方法是使用网络路由。我们使用负载均衡器,并且可以将其配置为启用粘性会话。它本质上添加了一个cookie,用于后续请求将用户路由到用户第一次点击的同一个发布者。这是一个非AEM解决方案,纯粹是网络和负载均衡器的一个功能,因此它可能是也可能不是您的选择。 AEM调度程序配置还允许stickyConnections配置听起来像在网络负载均衡器中完成相同的操作。

另见

答案 1 :(得分:1)

您可以执行以下操作

  1. 在调度程序和负载均衡器上启用Sticky会话(如果有的话)

    #Allowing Sticky sessions
    /stickyConnectionsFor "/content/brand/en-us"
    
  2. 启用会话管理

    #Configuration to increase session timeout limit
    /sessionmanagement
    {
            /directory "/mnt/var/www/html/content/.sessions"
            /header "Cookie:login-token"
            /timeout "3600"
    }
    

    PS:3600s = 60mins

答案 2 :(得分:0)

两种可能的解决方案 -

1)如果外部IDP提供身份验证服务,则将身份验证信息存储在cookie中。无论发布者的请求是什么,它都将使用cookie中的信息,并将使用IDP服务进行会话检查。

2)如果使用自定义身份验证处理程序,则在调度程序中使用粘性会话,这将确保请求返回到会话处于活动状态的同一发布者。