2012-04-18 17 views
1

私たちは、PHPとPHPの間のアクションを処理するためにCASとphpCASを使用します。より高度なWebアプリケーションの1つとして、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サーバにセッションを終了させるかを知っている人はいますか?

答えて

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が返されているという警告がコンソールに記録されます。
関連する問題