Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coldfusion从Id加载会话_Coldfusion - Fatal编程技术网

Coldfusion从Id加载会话

Coldfusion从Id加载会话,coldfusion,Coldfusion,有没有办法通过提供正确的CFTOKEN和/或CFID值来加载特定的用户会话 类似于php的session_id($id)函数 或者以某种方式更改特定会话的数据 我需要一个Web服务,将添加或更改特定用户会话的一些信息。我知道CFID和CFTOKEN值,因为我共享一个子域cookie。但是,应用程序位于不同的服务器上只要会话未过期,您就可以使用url中的CFID和CFTOKEN访问会话只要会话未过期,您就可以使用url中的CFID和CFTOKEN访问会话您可以通过在url上传递正确的值来完成此操作

有没有办法通过提供正确的CFTOKEN和/或CFID值来加载特定的用户会话

类似于php的session_id($id)函数

或者以某种方式更改特定会话的数据


我需要一个Web服务,将添加或更改特定用户会话的一些信息。我知道CFID和CFTOKEN值,因为我共享一个子域cookie。但是,应用程序位于不同的服务器上

只要会话未过期,您就可以使用url中的CFID和CFTOKEN访问会话

只要会话未过期,您就可以使用url中的CFID和CFTOKEN访问会话

您可以通过在url上传递正确的值来完成此操作,更多信息请点击此处

ColdFusion使用两个唯一的值来跟踪用户会话 信息这些值是CFID和CFTOKEN。它们存储为 cookies,但也可以通过URL和内部POST数据进行传递

会话变量是存储特定于会话的信息的位置 用户和到当前会话(例如,用户是否 已登录)

通过提供正确的 将CFID和CFTOKEN值发送到服务器,无论是在URL上还是在任何位置 还有你想要的

这篇文章有效地描述了您试图做的事情,它建议不要进行会话复制,因为这样会导致网络使用率很高

您试图跨多个物理服务器维护特定会话范围的位置。我过去处理这个问题的方法是维护一个数据库,存储需要在绑定到UUID的物理服务器之间传递的信息。为此,您可以只使用CFID/CFTOKEN值作为数据库PK,也可以创建另一个PK。这将允许您在URL字符串上传递CFID等,然后如果它到达一个到目前为止还没有到达的服务器(即没有使用这些CFID/CFTOKEN加载会话/会话),那么您可以从数据库中加载所需的变量

编辑另一种非数据库方法

首先在一台服务器上设置一个脚本,即getSessionData.cfm,它返回 会话范围中的数据采用可传输格式,即使用 SaveObject()(如果在CF9上),或者序列化JSON(),类似 那

<!--- on source server, getSessionData.cfm --->
<cfscript>
    WriteOutput(ToBase64(ObjectSave(session)));
</cfscript>

WriteOutput(ToBase64(ObjectSave(session));
然后设置一个从另一台服务器请求数据的处理程序 使用填充CFID/CFTOKEN的cfhttp请求访问会话,然后将该数据拉入新服务器上的会话

<!--- on target server --->
<cfhttp url="http://sourceserver/getSessionData.cfm">
    <!--- Params to pass through CFID/CFTOKEN or any other cookie/url/post params etc --->
</cfhttp>
<cfscript>
    structToImportToSession = ObjectLoad(ToBinary(cfhttp.FileContent));
    for (thisStructKey in structToImportToSession) {
        session[thisStructKey] = structToImportToSession[thisStructKey];
    }   
</cfscript>

structToImportToSession=ObjectLoad(ToBinary(cfhttp.FileContent));
for(structToImportToSession中的此StructKey){
会话[thisStructKey]=结构导入会话[thisStructKey];
}   
这样做的问题是,在生产环境中,如果服务器上有这种脚本,我会感到不安。这还意味着您需要明确地知道用户来自哪个物理服务器,以便可以从正确的服务器请求getSessionData.cfm脚本

Ben Nadel的这篇文章似乎采用了类似的原则来更新会话数据,我想这同样适用于更新会话数据


就个人而言,我仍然建议使用数据库驱动方法,因为它为您提供了清除旧会话等更清晰的机制,但是第二个选项应该是可行的,并允许您访问所需的内容。

您可以通过在URL上传递正确的值来完成此操作,更多信息请参见此处

ColdFusion使用两个唯一的值来跟踪用户会话 信息这些值是CFID和CFTOKEN。它们存储为 cookies,但也可以通过URL和内部POST数据进行传递

会话变量是存储特定于会话的信息的位置 用户和到当前会话(例如,用户是否 已登录)

通过提供正确的 将CFID和CFTOKEN值发送到服务器,无论是在URL上还是在任何位置 还有你想要的

这篇文章有效地描述了您试图做的事情,它建议不要进行会话复制,因为这样会导致网络使用率很高

您试图跨多个物理服务器维护特定会话范围的位置。我过去处理这个问题的方法是维护一个数据库,存储需要在绑定到UUID的物理服务器之间传递的信息。为此,您可以只使用CFID/CFTOKEN值作为数据库PK,也可以创建另一个PK。这将允许您在URL字符串上传递CFID等,然后如果它到达一个到目前为止还没有到达的服务器(即没有使用这些CFID/CFTOKEN加载会话/会话),那么您可以从数据库中加载所需的变量

编辑另一种非数据库方法

首先在一台服务器上设置一个脚本,即getSessionData.cfm,它返回 会话范围中的数据采用可传输格式,即使用 SaveObject()(如果在CF9上),或者序列化JSON(),类似 那

<!--- on source server, getSessionData.cfm --->
<cfscript>
    WriteOutput(ToBase64(ObjectSave(session)));
</cfscript>

WriteOutput(ToBase64(ObjectSave(session));
然后设置一个从另一台服务器请求数据的处理程序 使用填充CFID/CFTOKEN的cfhttp请求访问会话,然后将该数据拉入新服务器上的会话

<!--- on target server --->
<cfhttp url="http://sourceserver/getSessionData.cfm">
    <!--- Params to pass through CFID/CFTOKEN or any other cookie/url/post params etc --->
</cfhttp>
<cfscript>
    structToImportToSession = ObjectLoad(ToBinary(cfhttp.FileContent));
    for (thisStructKey in structToImportToSession) {
        session[thisStructKey] = structToImportToSession[thisStructKey];
    }   
</cfscript>

structToImportToSession=ObjectLoad(ToBinary(cfhttp.FileContent));
for(structToImportToSession中的此StructKey){
会话[thisStructKey]=结构导入会话[thisStructKey];
}   
这样做的问题是,在生产环境中,如果服务器上有这种脚本,我会感到不安。这也意味着你需要知道exp