此问题适用于Lucee 5.x应用程序。我不确定ACF和Lucee在集群中处理会话范围的方式是否存在差异。
背景:我正在autoLogin()
的{{1}}中实现一个application.cfc
函数,该函数查找存储在cookie中的令牌,然后使用它来认证用户。使用令牌后,将其替换为新值,并更新cookie。如果找不到令牌或令牌无效,则删除Cookie。会话锁定用于防止多个并发请求尝试登录用户,这会产生意想不到的副作用。
所有核心功能都可以工作(在单个节点上),但是我需要使其对群集友好。群集已正确设置(在application.cfc中为onRequestStart()
,以及存储会话数据的共享Memcached实例),并且运行良好。
我主要遇到的问题是:(请参考下面的代码)
下面的代码使用互斥会话锁来防止并发请求同时执行登录代码。 您如何将下面的会话锁替换为在整个集群中锁定会话的锁?
下面的代码假定可以立即看到对会话变量的更改。 在一个节点上更改会话变量,然后在另一个节点上并发请求尝试访问该变量时,是否为真?如果没有,是否有办法刷新会话范围以确保您获得最新的会话范围?
下面是autoLogin()函数:(在单个节点上工作)
this.sessionCluster = true;