У меня проблема с сеансами на ColdFusion 10. Я переместил сайт из CF 8 в CF10. CF8 находился на другом сервере. Я положил WriteOutput(" testing")
в функцию onSessionStart
Application.cfc, чтобы узнать, как будет вести себя сайт. Я запустил сайт, на странице по умолчанию, и появилось «тестирование». Когда я нажал на странице SignIn, снова появилось слово «тестирование». Он вызывает начало onSession. Вот что находится в моем onSessionStart.Новая сессия по каждому запросу
<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>
Я использую CSRFGenerateToken()
проверить страницу, поэтому если приложение продолжает называть onSessionStart, сеанс всегда будет очищен, и пользователь не сможет войти в систему.
Установка setClientCookies
на ложные вызовы onSessionStart по каждому запросу.
Чтобы устранить проблему, я установил значение setclientcookies
в true. Сессия потерянная проблема решена, но она дала новую проблему - сеанс не заканчивается при выходе браузера.
Если кто-нибудь может дать некоторые идеи, я был бы глубоко признателен.
- версия IIS является = IIS 8.5
- версия OS = Win сервер 2012 R2
Закрыв браузер не закончится сеанс. ColdFusion не знает, был ли браузер закрыт или вы просто долго читаете страницу или просто ушли со своего компьютера. Как отметил Панкадж, с переменными сеанса J2EE вы получите новый сеанс, если вы снова откроете браузер (окно браузера, а не только вкладку), но старый сеанс будет существовать до тех пор, пока он не истечет. –