У меня есть приложение ColdFusion 9 с использованием application.cfc
, и он создает сеанс, как он должен, но когда я дамп сессии, есть cfid и cftoken, а иногда urltoken, но no sessionid, и я не могу ссылаться переменная SESSION.SessionID
в моем коде, поскольку она говорит, что она не определена.coldfusion sessionid не создается
Что может заставить его создать cfid и cftoken просто отлично, но нет сеанса?
<cfset THIS.Name = "AppNameRedacted" />
<cfset THIS.ApplicationTimeout = CreateTimeSpan(2, 0, 0, 0) />
<cfset THIS.SessionManagement = true />
<cfset THIS.SessionTimeout = CreateTimeSpan(0, 2, 30, 0) />
<cfset THIS.SetClientCookies = true />
EDIT: onSessionStart() функция
<cffunction name="OnSessionStart" access="public" returntype="void" output="false" hint="Fires when the session is first created.">
<cfset var LOCAL = {} />
<cfset LOCAL.CFID = SESSION.CFID />
<cfset LOCAL.CFTOKEN = SESSION.CFTOKEN />
<!--- Clear the session. --->
<cfset StructClear(SESSION) />
<cfset SESSION.CFID = LOCAL.CFID />
<cfset SESSION.CFTOKEN = LOCAL.CFTOKEN />
<!--- Return out. --->
<cfreturn />
</cffunction>
Можете ли вы представить пример воспроизведения, который демонстрирует это? Вам просто нужно приложение Application.cfc с соответствующими настройками приложения и 'onRequestStart()' с 'writeDump (session)' в нем. Это CF9 или 9.0.1 или 9.0.2? Windows или * nix? –
@Renshi - После того, как вы переместите код [в вопрос] (http://stackoverflow.com/posts/27516742/edit), вы можете удалить избыточные комментарии. – Leigh
Это не значит, что ключ не создан. Вы удаляете его (и любые другие ключи в области сеанса) при вызове 'StructClear'. Вот почему это не определено позже. – Leigh