【问题标题】:How should I create cookie through flex/coldfusion that is readable by another template?我应该如何通过另一个模板可读的 flex/coldfusion 创建 cookie?
【发布时间】:2010-02-05 00:00:21
【问题描述】:

在 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

【问题讨论】:

  • 我还应该提到,这一切都在本地机器上的 ColdFusion 内部网络服务器上运行。

标签: apache-flex flash cookies flex3 coldfusion


【解决方案1】:

您是否在 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 将可用于以后的远程Flash 请求(即您的上传)。

【讨论】:

  • 听起来很合理,因为我看到来自 IE 的结果与来自 Chrome/Firefox 的结果不同。我会试一试。谢谢!
  • 我也没有运气让这种方法起作用。上传模板中的 cfid 和 cftoken 相同,但我仍然无法访问 cookie 或会话变量。我被难住了。
  • 没有一些代码来测试这是我能做的最好的事情。您是否考虑过 cookie 的替代品?与用户关联的数据库记录呢?
猜你喜欢
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-06
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多