4

SSO (Single Sign-On)メイン サイトとInvision Power Boardソフトウェアの間で使用するシステムを構築しましたが、ユーザーIPBがメイン サイトからログアウトしたときに、ユーザーをログアウトする方法がわかりません。

さらに、これを行うには、外部ファイルにどのファイルをロードする必要がありますか?

4

2 に答える 2

2

編集:これにIPBコードを使用するには、含める必要があります

require_once( IPS_ROOT_PATH . 'applications/core/modules_public/global/login.php' );

次に、拡張してこれを機能させるメソッドpublic_core_global_loginを呼び出すに は、個人的にはこの方法を行ったことがないので、手動で行う方法を以下に示します。doLogout()$this->member->setMember( $member_id );

IPB はセッションでデータを設定し、自動ログイン用にいくつかの Cookie を保存します。IPB ソースを使用せずに実行できます。あなたがしなければならないことは次のとおりです(queryとupdatecookieは、それぞれDBクエリを実行し、Cookie値を設定するための疑似関数であることに注意してください):

  query("DELETE FROM ".$ibf_prefix."sessions WHERE member_id = $userid");

  updatecookie($ibf_cookieid."member_id",0,time()-1800);
  updatecookie($ibf_cookieid."pass_hash",0,time()-1800);
  updatecookie($ibf_cookieid."session_id",0,time()-1800);

conf_global.php から $ibf_prefix を読み取ることができます:

$ibf_prefix = $INFO[sql_tbl_prefix];

そして$ibf_cookieid次のとおりです。

$ibf_cache = query_first("SELECT cs_value FROM " . $ibf_prefix . "cache_store WHERE cs_key = 'settings'");
$ibf_cache = unserialize($ibf_cache['cs_value']);

$ibf_cookieid = $ibf_cache['cookie_id'];

doLogoutメソッドのソースを読むことができますadmin/applications/core/modules_public/global/login.php

このための IPB API については知りません。

于 2014-04-06T16:39:29.647 に答える