3

У меня есть приложение 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>
+2

Можете ли вы представить пример воспроизведения, который демонстрирует это? Вам просто нужно приложение Application.cfc с соответствующими настройками приложения и 'onRequestStart()' с 'writeDump (session)' в нем. Это CF9 или 9.0.1 или 9.0.2? Windows или * nix? –

+1

@Renshi - После того, как вы переместите код [в вопрос] (http://stackoverflow.com/posts/27516742/edit), вы можете удалить избыточные комментарии. – Leigh

+2

Это не значит, что ключ не создан. Вы удаляете его (и любые другие ключи в области сеанса) при вызове 'StructClear'. Вот почему это не определено позже. – Leigh

ответ

3

Вот the ColdFusion 9 docs, что план, какие переменные можно ожидать в рамках сеанса и когда.

В вашем опубликованном коде вы делаете structClear() в области сеанса, который удаляет из него все переменные. Единственными двумя переменными, которые вы возвращаете, являются CFID и CFTOKEN.

+0

Проблема structclear() оказалась проблемой. Не знаю, почему я этого раньше не видел. Спасибо. – Renshi