Ich habe ein Problem mit Sitzungen auf ColdFusion 10. Ich habe eine Site von CF 8 nach CF10 verschoben. CF8 befand sich auf einem anderen Server. Ich habe eine WriteOutput(" testing")
in der onSessionStart
Funktion der Application.cfc, um zu wissen, wie sich die Site verhalten wird. Ich habe die Seite auf der Standardseite ausgeführt und die Ausgabe "Testen" erschien. Als ich auf die SignIn-Seite geklickt habe, erschien das "Test" -Wort erneut. Es ruft den onSession-Start auf. Hier ist, was in meinem onSessionStart ist.Neue Sitzung bei jeder Anfrage
<cfscript>
this.name="mysite";
this.clientmanagement=false;
this.sessionmanagement=true;
this.setclientcookies=false;
this.sessiontimeout="#CreateTimeSpan(0,0,40,0)#";//TODO: revert back to 40 mins as default
this.applicationtimeout="#CreateTimeSpan(0,1,0,0)#";
this.loginStorage = "Session";
this.logFile = "mysite_LOG";
this.scriptProtect = "all";
</cfscript>
<cffunction name="onSessionStart" returntype="void">
<cfif NOT StructKeyExists(cookie,"CFID") OR NOT StructKeyExists(cookie,"CFTOKEN")>
<cfheader name="Set-Cookie" value="CFID=#session.CFID#; Expires=#GetHttpTimeString(DateAdd("yyyy", 40, Now()))#; Path=/;SECURE;HTTPOnly;">
<cfheader name="Set-Cookie" value="CFToken=#session.CFToken#; Expires=#GetHttpTimeString(DateAdd("yyyy", 40, Now()))#; Path=/;SECURE;HTTPOnly;">
</cfif>
<cfscript>
WriteOutput("testing");
StructClear(session);
session.pageRedirector = ""; //used for sending a user back to a previous requested page when authentication is required first
session.profile = CreateObject("component","mysite.cfcs.user");
session.shoppingCart = CreateObject("component","mysite.cfcs.cart");
session.catalog = CreateObject("component","mysite.cfcs.catalog");
</cfscript>
</cffunction>
I CSRFGenerateToken()
bin mit der Seite, um zu überprüfen, so dass, wenn die Anwendung der onSessionStart beim Aufruf hält, wird die Sitzung immer gelöscht werden, und der Benutzer war einzuloggen nicht in der Lage.
Einstellung setClientCookies
auf falsche Aufrufe onSessionStart bei jeder Anfrage. Um das Problem zu beheben, setze ich setclientcookies
auf True. Das Sitzungsverlustproblem wurde gelöst, aber es gab ein neues Problem - die Sitzung wurde beim Beenden des Browsers nicht beendet.
Wenn jemand einige Ideen geben kann, würde ich es sehr schätzen.
- IIS-Version = IIS 8.5
- OS version = Win Server 2012 R2
den Browser schließen, wird nicht eine Sitzung beenden. ColdFusion kann nicht feststellen, ob der Browser geschlossen wurde oder ob Sie nur sehr lange brauchen, um die Seite zu lesen, oder ob Sie einfach von Ihrem Computer weggegangen sind. Wie Pankaj sagte, erhalten Sie mit J2EE-Sitzungsvariablen eine neue Sitzung, wenn Sie den Browser erneut öffnen (Browserfenster, nicht nur eine Registerkarte), aber die alte Sitzung wird weiterhin bestehen bleiben, bis das Zeitlimit überschritten wird. –