application.cfc
을 사용하는 ColdFusion 9 응용 프로그램이 있으며 세션을 덤프 할 때 cfid와 cftoken이 있고 때로는 urltoken이 있지만 sessionid는없고 참조 할 수없는 세션을 만듭니다. 내 코드에서 변수가 정의되지 않았다고 말하면서 SESSION.SessionID
변수.coldfusion sessionid가 생성되지 않았습니다.
무엇이 cfid와 cftoken을 생성하지만 sessionid는 없으므로 발생시킬 수 있습니까?
<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 />
편집 : 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가 필요하고'writeDump (세션)'이있는'onRequestStart()'만 필요합니다. CF9 또는 9.0.1 또는 9.0.2입니까? Windows 또는 * nix? –
@Renshi - 코드를 [질문에] 이동하면 (http://stackoverflow.com/posts/27516742/edit) 중복 된 주석을 삭제할 수 있습니다. – Leigh
키가 만들어지지 않습니다. 당신은'StructClear'를 호출 할 때 그것을 삭제하고 있습니다 (세션 범위의 다른 키들). 그것이 나중에 정의되지 않은 이유입니다. – Leigh