2013-03-05 2 views
0

하나의 도메인에 로그인 페이지가 있고 다른 도메인에 로그인 페이지가 있습니다.다른 도메인에서 시작했을 때 coldfusion 세션이 중단되었습니다.

별도의 도메인에서 로그인을 사용하면 두 번째 도메인에 대해 세션 변수가 저장되지만 세션 변수는 두 번째 도메인에 저장되지 않습니다.

나는

로그인 도메인이 응용 프로그램은 세션 변수를 생성하는 응용 프로그램 도메인에서 스크립트를 실행하는 도메인간에 세션을 공유하지 않는거야 분명합니다. 앱 도메인에서 리디렉션이 호출 될 때이 변수가 전송되지 않습니다.

같은 도메인에서 스크립트를 호출하면 세션이 예상대로 저장됩니다. 재미 있은만큼, 이것은 오늘까지 잘 일하고 있었다. 일부 cf 설정이 변경되었습니다.

CFID와 CFTOKEN이 전달되는 것을 확인했습니다. 세션이 참조 웹 사이트의 CFID와 CFTOKEN을 사용하여 작성되었을 가능성이 있습니까?

그렇다면 어떻게 예방할 수 있습니까?

답변

3

당신은 Application.cfc에 this.setclientcookies = false를 설정하여 기본 세션 쿠키 동작을 재정의하고 발행 할 수 Application.cfc의 onSessionStart()

예에서 cfcookie의 당신이 그것에있는 동안

<cfcomponent> 
    <cfset this.sessionmanagement = true> 
    <cfset this.setclientcookies = false> 
    <cffunction name="onSessionStart"> 
     <cfcookie name="CFID" value="#session.cfid#" domain=".subdomain.domain.com"> 
     <cfcookie name="CFTOKEN" value="#session.cftoken#" domain=".subdomain.domain.com"> 
    </cffunction> 
<cfcomponent> 

,뿐만 아니라 true로 httpOnly 속성을 설정하는 것은 좋은 생각이 될 것입니다.

+0

cffunction 비트를 포함하면 '루틴을 두 번 이상 선언 할 수 없습니다.'라는 오류가 발생합니다. 및 '나를 위해 작동하지 않습니다. ( – Daniel

+1

App.cfc 파일의 다른 곳에서 선언 된 onSessionStart가 그 오류의 소리입니다 – Busches

+0

CFwheels를 사용하고 있습니다. 그렇습니다. :) 나는 그것을 적절한 장소에 추가했지만 여전히 작동하지는 않았다. – Daniel

관련 문제