【问题标题】:coldfusion: why are my client variables being wiped?Coldfusion:为什么我的客户端变量被擦除了?
【发布时间】:2014-03-08 21:05:43
【问题描述】:

在对用户进行身份验证后,他们的详细信息将存储在客户端范围内。当我们重定向到他们的仪表板时,添加到客户端范围的所有新项目都会被擦除。我已经清除了我的 cookie 和缓存,现在很明显没有客户端变量实际上存储在 cookie 中(我在交换应用程序范围之前有一些剩余)。

在我将应用程序从使用 application.cfm 更新为 application.cfc 后开始发生这种情况

我定义了以下应用程序设置:

<cfset this.SessionManagement = true>
<cfset this.ClientManagement = true>
<cfset this.SetClientCookies = true>
<cfset this.sessionTimeout = CreateTimeSpan(0,8,0,0)>
<cfset this.applicationTimeout = CreateTimeSpan(0,8,0,0)>

您能否提出任何为什么客户端变量会消失的原因?

【问题讨论】:

  • 在客户端范围内存储变量通常不是一个好主意,如果可能的话,最好使用会话范围。例如阅读dopefly.com/pages/ColdFusionClientVariablesFinalNail.cfm
  • 我认为应该尽可能少的存储在session中。在现代浏览器中,这些变量很容易以程序员不希望的方式更改值。
  • 您的客户端变量存储使用什么?
  • 尽管我同意你们@duncan 的观点,但我并不是要替换现有的古老系统,我只是想将其转换为使用 application.cfc 而不是 application.cfm跨度>
  • “这在我将应用程序从使用 application.cfm 更新为 application.cfc 后开始发生” - 如果您恢复到以前的代码,它会停止发生吗?如果是这样,请一次更改一点,直到找出破坏它的代码。

标签: coldfusion scope


【解决方案1】:

经过大量故障排除后,我发现清除客户端范围的是应用程序名称。我们的名字模仿了我们的应用程序的版本和发布号,所以它里面有句号(可能还有连字符)。在我将所有内容转换为下划线后,它就开始工作了。

我这样做是因为我们所有其他应用程序都使用相同的约定运行,所以我不确定它们为什么工作而这个不工作,但这就是解决方案。

<cfset this.name = "client_product_v1.6.1.0.r1.o">

成为

<cfset this.name = "client_product_v1_6_1_0_r1_o">

它开始工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2021-08-23
    • 1970-01-01
    相关资源
    最近更新 更多