Lucee / ColdFusion-跨集群锁定会话范围并同时访问会话变量

时间:2019-03-20 17:36:19

标签: session coldfusion cluster-computing lucee application.cfc

此问题适用于Lucee 5.x应用程序。我不确定ACF和Lucee在集群中处理会话范围的方式是否存在差异。

背景:我正在autoLogin()的{​​{1}}中实现一个application.cfc函数,该函数查找存储在cookie中的令牌,然后使用它来认证用户。使用令牌后,将其替换为新值,并更新cookie。如果找不到令牌或令牌无效,则删除Cookie。会话锁定用于防止多个并发请求尝试登录用户,这会产生意想不到的副作用。

所有核心功能都可以工作(在单个节点上),但是我需要使其对群集友好。群集已正确设置(在application.cfc中为onRequestStart(),以及存储会话数据的共享Memcached实例),并且运行良好。

我主要遇到的问题是:(请参考下面的代码)

  1. 下面的代码使用互斥会话锁来防止并发请求同时执行登录代码。 您如何将下面的会话锁替换为在整个集群中锁定会话的锁?

  2. 下面的代码假定可以立即看到对会话变量的更改。 在一个节点上更改会话变量,然后在另一个节点上并发请求尝试访问该变量时,是否为真?如果没有,是否有办法刷新会话范围以确保您获得最新的会话范围?

下面是autoLogin()函数:(在单个节点上工作)

this.sessionCluster = true;

0 个答案:

没有答案