我正在使用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#">
答案 0 :(得分:0)
我通过在config / app.cfm中注释掉(this.setClientCookies = false;
)来实现它。
答案 1 :(得分:0)
更改setClientCookies = true只是使用cookie来跟踪会话。为了在没有cookie的情况下使用会话管理,您需要使用Application.cfc和application.cfm或onSessionStart设置sessionTimout。如果你想让它正常运行,或者对于那些偶然发现这篇文章的人,我会提供一些链接。 Ben通过示例解释Application.cfc做得很好。