2016-05-31 4 views
0

У меня проблема с сеансами на 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
+0

Закрыв браузер не закончится сеанс. ColdFusion не знает, был ли браузер закрыт или вы просто долго читаете страницу или просто ушли со своего компьютера. Как отметил Панкадж, с переменными сеанса J2EE вы получите новый сеанс, если вы снова откроете браузер (окно браузера, а не только вкладку), но старый сеанс будет существовать до тех пор, пока он не истечет. –

ответ

0

Включить J2EE сессий в CF Administrator (Настройки сервера> Переменные памяти> Использование J2EE сессии переменные)

Если вы используете управление сеансом ColdFusion, ColdFusion автоматически завершает сеансы и удаляет все переменные области сеанса, если клиент неактивен для периода ожидания сеанса. Сессия не заканчивается, когда пользователь закрывает браузер.

Если вы используете управление сеансом J2EE, ColdFusion завершает сеанс и удаляет все переменные области сеанса, если клиент неактивен для периода ожидания сеанса. Однако браузер продолжает отправлять один и тот же идентификатор сеанса, а ColdFusion повторно использует этот идентификатор для сеансов с этим экземпляром браузера, если браузер остается активным.

Читать эту http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-7c48.html#WSc3ff6d0ea77859461172e0811cbec22c24-7d2d

Смежные вопросы