我需要查看ColdFusion2018中所有已登录用户的所有会话范围

问题描述

我从这个发现开始;

<cfscript>
    app = application.getApplicationSettings().name;
    sessionCollection = application.sessionTracker.getSessionCollection(app);
</cfscript>

,然后尝试遍历集合;

<cfloop collection="#sessionCollection#" item="i">
    #StructFind(i,'CurrentAction')#
</cfloop>

失败; 您试图取消引用类型为java.lang.String类型的标量变量作为具有成员的结构。

我尝试过

#CurrentAction[i]#

失败; 变量CURRENTACTION未定义。

当我知道一个事实存在时 (https://ibb.co/ZJwsKFS

我也尝试过点符号。

目的是为一个用户标识ajax侦听器活动,并影响对另一个特定用户的操作作为响应。我的印象是我可以由sessionID最终用户发送操作。如果无法实现,请随时告诉我。

解决方法

所以这段代码:

<cfset x = {
    a = 1,b = 2,c = 3
}>

<cfoutput>
    <cfloop collection="#x#" item="i">
        <li>#i#</li>
    </cfloop>
</cfoutput>

输出以下内容:

  • A
  • B
  • C

这意味着icollection属性中定义的结构的键。您的代码试图在集合(结构)中找到一个键,但是您引用的是错误的变量。

要查找B的值,请执行StructFind(x,"b")。您也不需要cfloop,只需要检查密钥是否存在,然后获取值即可。

<cfset someVariable = "">
<cfif structKeyExists(x,"b")>
    <cfset someVariable = structFind(x,"b")>
</cfif>