2012-04-29 2 views
3

목표 :다른 응용 프로그램과 PHP 세션 상태를 유지하는 방법

는 PHP 응용 프로그램과 함께, 전체 응용 프로그램을 포함하는 ColdFusion 응용 프로그램 사이에서 세션 상태를 유지합니다.

현재 방법 : 우리의 ColdFusion 응용 프로그램 (로그인 할 수있는 유일한 방법, 즉, PHP 응용 프로그램을 통해 로그인 할 수 없습니다)에 로그인하면

, 우리는 원격 PHP 파일을 호출하려면 다음 JS 조각을 사용하고있는 하기 (ColdFusion을 통해 설정할 수 없습니다)는 PHP 세션 쿠키를 설정하고, 이후 ColdFusion 페이지 방문에서 PHP 세션 갱신 : 병렬 세션을 유지하기 위해 로그인 할 때

<script type="text/javascript"> 
    // Create an image. 
    var imgPing = new Image(); 
    // Set image src to App A ping url. 
    imgPing.src = "http://remotePHPApplicationURL/remoteFile.php"; 
</script> 

이 조각은 각 ColdFusion 페이지에로드됩니다.

이 방법은 비 SSL Coldfusion 페이지를 통해 호출 할 경우 설계된대로 작동하지만 응용 프로그램을 구성하는 SSL Coldfusion 페이지가 있습니다. SSL 페이지에서이 스 니펫을 호출하면 Chrome Inspector에서 'SSL 연결을 해제하는'안전하지 않은 콘텐츠 경고와 '익명 함수'오류가 모두 발생합니다.

우리는 CFHTTP를 사용하여이 PHP 파일을 "가져 오"려고했지만 PHP 쿠키는 설계대로 설정하지 않았습니다. img.src를 사용하여 PHP 파일을 실행하고 CFHTTP를 사용하는 방법과 관련하여 이해할 수없는 내용이 있습니다.

질문 :

는 단지 비 SSL 상황에서 작동 보인다 img.src을 uring 대 PHP 파일을 핑/실행/호출하는 더 나은 방법이 다른가요? 여기

는 PHP 파일 같은 모습의 예입니다

<?php 
    error_reporting(E_ALL & ~E_NOTICE); 
    define('THIS_SCRIPT', 'index'); 
    define('CSRF_PROTECTION', true); 

    $globaltemplates = array();  

    require_once('./global.php'); 

    $phpapp->session->save(); 
    setcookie('userid', 'uid'); 
    setcookie('password', 'pass'); 
    header("Content-Type: image/png"); 
?> 
+0

SSL 페이지에서 이것을 호출하면 어떻게됩니까? 'imgPing.src = "https : //remotePHPApplicationURL/remoteFile.php";' –

+0

https : //remotePHPApplicationURL/remoteFile.php에는 SSL 인증서가 없습니다. 그래서 우리는 오류가 발생합니다. –

+0

서버에 httpsdocs 또는 private_html 폴더가 있습니까? 만약 당신이이 폴더에 게시물의 끝에 위에서 언급 한 PHP 파일을 넣어 거기에 세션 설정을합니까? –

답변

4

CFHTTP를 사용할 수 있지만 브라우저와 원격 응용 프로그램간에 프록시처럼 사용하고 보내고받은 쿠키를 수동으로 관리해야합니다.

나는이 성공적으로 과정은

  • 반환 된 HTTP 응답을 검사하고 압축을 풉니 다 remoteFile.php이

    1. 와 cfhttp 같이 보일 것이다 ColdFusion에서

      에서의 phpBB에 사용자가 로그인 할 때 수행 한 원격 응용 프로그램에서 쿠키를 설정하십시오.

    2. CFCOOKIE을 사용하여 사용자 브라우저에 쿠키를 설정하십시오.

    후속 요청에서 앱이 보낸 쿠키가 있는지 확인하고 CFTTPPARAM을 사용하여 1 단계에서 CFHTTP 요청과 함께 쿠키를 전달해야하는지 확인해야합니다. Theres 아마 응용 프로그램에 의해 설정된 sessionid 또는 비슷한 쿠키, 세션을 유지하기 위해이 보내야합니다.

  • +0

    답변 해 주셔서 감사합니다. –

    0

    가 잘하면 내가 잘못,하지만 나는 해결책을 생각할 수 없다. 그러나 나는 솔루션이 왜 도움이 될만한지에 관해서는 어려운 이유에 대해 통찰력을 가지고 있습니다.

    CFHTTP는 PHP 페이지를 호출하는 사용자 브라우저가 아닌 ColdFusion 서버이기 때문에 작동하지 않습니다. 따라서 ColdFusion 서버에는 세션이 있지만 사용자의 컴퓨터에는 세션이 없습니다.

    브라우저 내에서 파일을 호출하는 방법은 많습니다 (IMG 태그, CFSCRIPT 태그, IFRAME, 이미지 개체 등에서 호출 할 수 있음). 그러나 모두 동일한 문제가 발생합니다. 즉, SSL 페이지에서 비 SSL 파일을 호출하는 경우 브라우저가 경고를 발행합니다.

    그래서 PHP 서버에서 SSL을 사용할 수없는 SSL을 통해 ColdFusion에서 PHP 세션을 유지 관리하는 것은 브라우저에서 경고 없이는 불가능할 수도 있습니다. 물론이 점에 대해서는 틀림없이 입증되고 싶습니다.

    필요에 따라 서버에서 PHP 서버로 연결되는 링크를 만들면 로그인 정보를 포함하여 PHP 서버에 양식 게시물을 보내 사용자가 방문 할 때 자동으로 로그인되도록 할 수 있습니다 제 3 자 사이트. 그게 네 상황에 효과가 있을지 모르겠다.하지만 나는 그걸 밖으로 던질 줄 알았다.

    그러나 ColdFusion 응용 프로그램의 각 페이지 요청시 세션을 유지 보수하는 것 이외의 다른 경로를 찾는 것이 주요 포인트입니다.

    +0

    통찰력을 가져 주셔서 감사합니다. –

    0

    SAML SSO 구현을 사용하고 필요한 경우에만 특정 응용 프로그램에 인증을 제안하고, DB를 사용하여 json 문자열로 간단한 세션 정보를 상호 저장소에 저장할 수 있습니다. 제대로 구현되면 경험이 원활 해지고 확장 가능한 솔루션을 제공 할 것입니다.

    관련 문제