Сессия ColdFusion
Я создаю сессионную корзину для покупок с платформой 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>
Views / корзина /index.cfm
<!--- this return an empty array (same in all other web page)--->
<cfdump var="#session.cart#">
2 ответа
Изменение setClientCookies=true просто использует куки для отслеживания сеанса. Чтобы использовать управление сеансом без файлов cookie, необходимо установить sessionTimout с помощью application.cfm или onSessionStart с помощью Application.cfc. Если вы хотите, чтобы он работал правильно, или для тех, кто наткнулся на этот пост, я включил несколько ссылок. Бен делает большую работу, объясняя Application.cfc на примере.
Я получил его на работу, комментируя (this.setClientCookies = false;
) в config/app.cfm.