我应该如何通过另一个模板可读的flex / coldfusion创建cookie?

时间:2010-02-04 15:02:21

标签: flex flash cookies flex3 coldfusion

在flex应用程序中,我有一个用户登录。登录将ColdFusion函数作为远程对象调用,该远程对象对用户进行身份验证,并在适用的情况下返回其ID和访问级别。 这工作正常,但现在我还想要为另一个ColdFusion模板(从fileReference.upload()调用)创建一个cookie,以便以后能够访问。

我尝试了几种不同的方法来创建cookie - cfcookie,在ColdFusion函数中创建一个带有JavaScript的cookie,并在coldfusion函数返回到flex结果处理程序后使用带外部接口的JavaScript创建cookie。所有这些都经过尝试,有很多关于到期,路径和域标签的选项。

其中任何一个似乎都适用于cookie创建。 Cookie会显示在我的Chrome域名列表中以及我为此目的安装的Firefox附加内容“查看Cookie 1.9.2”中。然而,在稍后调用它时,我的upload.cfm似乎没有这些cookie可读。

upload.cfm一旦被文件上传请求调用,就会发送用户ID和文件。从这里开始,它应该是与文件一起发送的id和来自cookie的id之间的简单比较。到目前为止,upload.cfm模板无法找到cookie(使用任何创建方法)查看明显的#cookie.name#或甚至#name#。

我很欣赏为什么会发生这种情况,或者可能是我试图实施的安全性的替代方法。

感谢阅读,

-cs

1 个答案:

答案 0 :(得分:2)

您是否在Internet Explorer以外的浏览器中完成了大部分/全部测试?

不幸的是,a bug in the Flash player [需要登录],可以概括为:

  • (在Internet Explorer以外的浏览器中)Flash播放器使用与浏览器不同的网络堆栈,因此......
  • Flash播放器发出的请求具有不同的服务器端会话,例如,嵌入Flash播放器的页面请求。

这会导致一种情况,即页面设置的会话变量(默认情况下很容易)不可用于页面上flash播放器发出的远程请求。

CFID和CFTOKEN被设置为cookie并存储在session.urlToken变量中。 (如果您正在使用Java会话管理,也包括JSessionId)。

我不是肯定的,但我认为这可能是你问题的根源。

我相信如果您将CFID和CFTOKEN(和JSessionId)值作为FlashVars传递给Flex应用程序,然后将它们包含在对服务器的远程请求中,那么您设置的cookie将可用于以后的远程闪存请求(即您的上传)。