ColdFusion会话问题

时间:2014-02-15 22:32:09

标签: coldfusion coldfusion-9 cfwheels

我正在使用CFWheels框架1.1.8创建会话基础购物车。我有一个奇怪的问题,ColdFusion 9会话不会持续存在。我花了无数个小时检查并仔细检查我的代码。我希望新鲜的眼睛可以发现我错过的东西。下面是我的代码的简化版本。任何建议都会非常感激。

配置/ app.cfm

<cfscript>
    this.name = hash(getDirectoryFromPath(getCurrentTemplatePath())
                  , "SHA-256");   
    this.applicationTimeout = createTimeSpan(0, 2, 0, 0);
    this.loginStorage = "session";
    this.sessionManagement = true;
    this.sessionTimeout = createTimeSpan(0, 1, 0, 0);
    this.setClientCookies = false; 
    this.setDomainCookes = false;
</cfscript>

活动/ onRequestStart.cfm

<cfscript>
   if (! StructKeyExists(session, "cart")){
       session.cart = arrayNew(1);
   }
</cfscript>

控制器/ Cart.cfc

<cfcomponent extends="Controller">

   <cffunction name="index">    
   </cffunction>

   <cffunction name="create">
       <cfset  arrayAppend(session.cart, structNew())>
       <cfset index = arrayLen(session.cart)>
       <cfset session.cart[index].title = "Product Name">
       <cfset session.cart[index].quantity = "1">
       <!--- 
           this return the expect cart array with product. 
           The item disappears once it gets redirected to the index page 
       --->
       <cfdump var="#session.cart#" abort>

       <cfset redirectTo(action="index")>
    </cffunction>
</cfcomponent>  

查看/购物/ index.cfm

<!--- this return an empty array (same in all other web page)--->
<cfdump var="#session.cart#">

2 个答案:

答案 0 :(得分:0)

我通过在config / app.cfm中注释掉(this.setClientCookies = false;)来实现它。

答案 1 :(得分:0)

更改setClientCookies = true只是使用cookie来跟踪会话。为了在没有cookie的情况下使用会话管理,您需要使用Application.cfc和application.cfm或onSessionStart设置sessionTimout。如果你想让它正常运行,或者对于那些偶然发现这篇文章的人,我会提供一些链接。 Ben通过示例解释Application.cfc做得很好。

Bens Tutorial