以下は、私がDrupalでやっていることです。任意のCMSを使用する場合、それを行う特定の方法がありますが、コア構造はPHP環境でサポートするのと同じです。あるサイトがログイン要求を受け取ると、指定されたユーザー名とパスワードで内部的に他のサイトにログインします。
- 最初にサイトにログインし、Cookie Tokesなどを取得して、ユーザーの要件に関連するその他の項目を進めます。
サンプルコードは、Drupal CMS用です。それがどのように機能するのか、その機能を理解してから、関連する部品をコピーして自分の環境で動作させることができます。
// Build request data
$user_login_method = 'POST';
$user_login_retry = 0;
$post_data = array('username' => trim($username), 'password' => trim($password));
$user_login_data = http_build_query($post_data, null, '&');
// Send a request with the data to other site
$login_request = drupal_http_request($other_site_login_url, $user_login_headers, $user_login_method, $user_login_data, $user_login_retry);
// Look for set cookie header value in the response
if(isset($login_request->headers['Set-Cookie'])) {
// Set the cookie name and do the rest based on values
}
- 第二には、ユーザーをログアウトするために、他のサイトのログアウトURLを呼び出すんです。ログイン呼び出しで返されたCookie値を使用する必要があることに注意してください。ただし、ログアウトページから別のサイトへのajax呼び出しを行った場合、回避策はありません。
drupal_http_requestメソッドの詳細については、DrupalサイトAPIを参照してください。
これは、PHPでスキルを習得している環境でこれを行うのに役立ちます。
両方のサイトのユーザーデータが同じだとすると、両方のサイトがデータベースを共有しているため、データベースにフラグを設定できますか? – phpmeh
ちょっとphpmeh、良い提案です。しかし、これらのアプリケーションは両方とも同じデータベースを共有しません。また、データベースや第2サイトのコードベースにアクセスすることはできません。他に何かありますか? 〜 –
どのようにして、同時に両方のWebサイトでセッションを作成していますか? APIを介して? – phpmeh