Estoy creando un carrito de compras base de sesión conCFWheels framework 1.1.8. Tengo un problema extraño en el que la sesión de ColdFusion 9 no persiste. Pasé incontables horas revisando y revisando mi código. Espero que un ojo nuevo pueda detectar lo que me he perdido. A continuación se muestra una versión simplificada de mi código. Cualquier sugerencia sería muy apreciada.
config / 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>
Eventos / onRequestStart.cfm
<cfscript>
if (! StructKeyExists(session, "cart")){
session.cart = arrayNew(1);
}
</cfscript>
Controladores / 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>
Vistas / carrito / index.cfm
<!--- this return an empty array (same in all other web page)--->
<cfdump var="#session.cart#">
Respuestas
0 para la respuesta № 1Lo hice funcionar comentando el (this.setClientCookies = false;
) en la config / app.cfm.
0 para la respuesta № 2
cambiar setClientCookies = true es simplemente usarLas cookies para seguir la sesión. Para utilizar la administración de sesión sin cookies, debe configurar un sessionTimout con application.cfm o onSessionStart usando Application.cfc. Si desea que funcione correctamente o para cualquier persona que tropiece con esta publicación, estoy incluyendo algunos enlaces. Ben hace un gran trabajo explicando Application.cfc con el ejemplo.