3

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>
+2

설명하는 재현 케이스를 제공 할 수 있습니까? 관련 앱 설정으로 Application.cfc가 필요하고'writeDump (세션)'이있는'onRequestStart()'만 필요합니다. 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