2012-04-18 3 views
1

우리는 CAS와 phpCAS를 사용하여 PHP 스크립트와 CAS 사이의 작업을 처리합니다. 고급 웹 응용 프로그램 중 하나 인 CAS는 세션 관리가 아닌 인증 용도로만 사용됩니다. 우리의 로그 아웃 스크립트 동안, 우리는 CAS 세션을 죽이고 싶습니다. 그러나 브라우저에서 발생하는 일종의 동작없이 원격으로 phpCAS를 호출하여 CAS 세션을 종료하는 방법을 결정할 수는 없습니다. phpCAS 문서에서 스크립트를 사용하여 CAS 세션을 어떻게 종료합니까?

:

phpCAS :: 로그 아웃()
로그 아웃 후, CAS 서버 인쇄 로그 아웃 페이지입니다.

는 phpCAS :: logoutWithRedirectService ($ 서비스)
로그 아웃 한 후, CAS 서버는 지정된 URL로 브라우저를 리디렉션합니다.

옵션 # 1은 CAS 로그 아웃 페이지로 리디렉션됩니다. 옵션 # 2는 지정된 URL로 리디렉션됩니다. 우리는 어느 것도하지 않는 옵션이 필요합니다.

//Kill the CAS session 
phpCAS::logout(); 

//Kill the cookie 
setcookie("our-cookie"); 

//Unset hash in the database 
$result = pg_query($connection, "UPDATE table SET field = null WHERE field = '".pg_escape_string($var)."'"); 

브라우저를 리디렉션 phpCAS의 기본 동작 어딘가에이 기능을 나누기 :

이 코드를 생각해 보자. 이 스크립트는 브라우저를 리다이렉션해서는 안되며, 비동기 적으로 호출 될 것이고 리턴은 현재 뷰를 수정하는 ExtJS 콜백에 다시 변수를 보낼 것이다.

누구든지이 기능을 수행 할 수 있도록 CAS 서버에서 세션을 종료 할 수있는 방법을 알고 있습니다 (phpCAS의 유무에 관계없이).

답변

0

동일한 도메인 정책으로 인해 클라이언트 응용 프로그램에서 비동기 스크립트로 GET 또는 POST를 통해 CAS 서버에 적절한 요청을 할 수 없습니다. 이 방법

function logout() 
{ 
    var head = document.getElementsByTagName('head')[0]; 
    var script = document.createElement('script'); 
    script.src = 'https://cas.company.com/logout'; 
    script.type = 'text/javascript'; 
    head.appendChild(script); 
} 

단점은 다음과 같습니다 :

  • 당신은하지

    한 가지 해결 방법은 (크로스 도메인 요청 JSONP 유사) 스크립트 객체와 CAS 로그 아웃을 포함하는 것 CAS 서버의 성공적인 응답을 참조하십시오.

  • 스크립트 태그에서 HTML이 반환된다는 경고가 콘솔에 기록됩니다.
관련 문제