2012-02-10 3 views
1

xml webservice를 통해 원격 데이터베이스에 대해 권한을 부여하는 로그인 기능이 있습니다. 로그인에 성공하면 로그인 한 사용자의 사이트 변수 (회원 전용 콘텐츠 등)를 따라 다양한 세션 변수를 설정합니다. 이 모든 것이 잘 작동합니다.하나의 application.cfm에서 다른 application.cfm으로 Coldfusion 세션 변수에 액세스

우리는 상점을 개설 중이며 회원 가격 책정, 양식 작성 등을 위해 세션 변수에 액세스하고 싶습니다. 지금은 가게에 대한 링크 만에 회원이 로그인 한 후에 볼 수 있습니다 그래서 같은 링크의 URL 토큰을 포함하고있다 :.

https://mysite.com/store/index.cfm?<cfoutput>#session.urltoken#</cfoutput> 

같은 CFID, CFTOKEN을 보여줍니다 상점 페이지에서 세션을 CFdumping 및 jsessionid 로그인 페이지에서, 그래서 세션을 올바르게 유지되고있다 생각 -하지만 내 세션 변수 중 아무 것도 덤프에 표시하고 그들을 참조하려고하면 "세션에서 정의되지 않은"오류가 발생합니다.

이것은 로그인에서 http> http, https> https 또는 다른 조합을 통해 저장 여부에 관계없이 발생합니다. 그것은 모두 동일한 서버에 있습니다. 이 문제를 해결하는 데 도움이 되었으면합니다. 누군가 목표를 달성하는 방법에 대해 더 좋은 제안을한다면, 정말 감사 할 것입니다. 다시 말하면, 상점에 처음 로그인했을 때 상점에 로그인 한 회원을 인식하도록하는 것입니다. 고마워요!

+0

전체 URL이 동일한 것으로 확인 했습니까 (예 : 양쪽에 mysite.com 또는 www.mysite.com)? 그렇지 않으면 코드가 작동합니다. –

+0

동일한 애플리케이션에 숙박하고 계십니까? 즉, 두 경우 모두에서'application.applicationname'이 동일합니까? – ale

+0

안녕 빌리 감사합니다, URL은 동일합니다 - 그들은 모두 동일한 사이트의 일부 즉, https://mysite.com/login.cfm 지나서 얻는 것은 세션 vars를 설정하고 https : // mysite에 대한 링크를 제공합니다 .com/store/index.cfm. 알, 지금 응용 프로그램 설정을 확인하고 있습니다 ... 감사합니다! – daltec

답변

0

두 응용 프로그램은 다른 이름을 가지고 있다면, 모든 응용 프로그램 세션 변수는 해당 응용 프로그램에 고유 한 같은 이름을

이 필요합니다.

그래서 application.cfm에서 생성자에서 this.name을 사용하여 설정할 수있는 application.cfc가있는 경우 이름이 으로 설정되어 있는지 확인하십시오.

+1

질문을 다시 읽은 후, 우리 모두가 무슨 일이 일어나고 있는지 이해하지 못하는 것처럼 보입니다.두 애플리케이션이 별도의 애플리케이션이라는 것은 아닙니다. 참조하는 페이지가 모두 동일한 애플리케이션에 있다는 점에서 저에게 들리므로 "두 애플리케이션"과 같은 것은 없지만 컨텍스트 스위치에서 세션이 손실되고 있습니다. SSL과주고 받기. –

+0

가능한 이름이 다르게 지정되었거나 세션 변수가 설정되어 있지 않습니다. –

+0

저는 웹 서버에서 하나의 폴더, 하나의 응용 프로그램, 하나의 application.cfm, 두 개의 다른 사이트로 읽습니다. 그러나 제목을 읽는 것, 아마도 그럴 수는 없습니다. –

-1

서버 범위를 사용할 수 있습니다.

<cfloop collection='#server.sharedSession['#url.urlToken#']#" index="i"> 
    <cfset session[i]=servers.sharedSession['#url.urlToken#'][i]> 
</cfloop> 

당신은 단지 전체 세션을 복사 할 수 있지만, 루프는 소스 세션에없는 값을 보존 할 수 있습니다 :

<cfset server.sharedSession[session.urlToken]=session> 

는 서버 세션에 복사합니다.

+0

저는 이것이 정말 나쁜 생각이라고 생각합니다. 서버 변수 범위에 토큰을 추가하여 세션 변수를 복제하려고합니다. 무엇이 그들을 정리할 것인가, 등등. 나는 세션 변수를 고수 할 것이다. –

+0

동의합니다 : 두 개의 다른 응용 프로그램에서 세션을 동기화하려면 HTTP를 통한 간단한 서비스 호출을 사용하는 것이 좋습니다. 그러면 서버 범위의 문제를 피할 수 있습니다. 그러나 나는 그것이 여기서 일어나는 일이라고 생각하지 않는다. 나는 그것이 같은 앱이라고 생각한다. (당신의 대답에 대한 내 대답을 보라) –

+0

빌리와 데일에게 감사의 말을 전한다. 정말 감사! 좀 더 면밀한 조사를 통해 다음과 같은 것들이 있습니다 : 1) mysite.com을위한 하나의 루트 폴더; 그 안에있는 다양한 폴더 (예 : 모바일, 상점, 이미지 등). 2) 사이트의 일부가 Farcry CMS를 사용합니다. 루트 폴더에는 실제로 application.cfc, farcryConstructor.cfm 및 proxyApplication.cfc가 있습니다. store 폴더에는 application.cfm이 있습니다. 생성자는 application.cfm과 다른 이름으로 cfset을 수행합니다. 내가 약간의 빠른 편집을하는 동안 기다려라. .. 다시 한번 감사드립니다!! – daltec

관련 문제