このモジュールを異なるDrupalバージョンで動作させることは可能ですか?
Drupal 6)にはいくつかの大きなプロジェクトがあり、移行計画から始めたいと思います。サイトの一部を移行できないと、タスクは小さな移行とテストを行うことができます。
ベーカリーシングルサインオンシステム があることを確認しましたが、サブドメインで異なるDrupalバージョンを使用している場合に使用できるかどうかはわかりません。
更新:ベーカリーはその魅力のように機能します。異なるDrupalバージョンのサイト、同じドメインの異なるフィレット、そしてもちろん異なるサブドメインにインストールできます。
Drupal-6サイトを使用して、hook_login_validate()をオーバーライドし、独自の認証メカニズムを記述します。成功に基づいてTRUEまたはFALSEを返す関数はすべて機能するため、思ったより簡単です。データベースに直接アクセスするか、JSON Webサービスを介してdrupal-7サーバーに接続できます。 I JSONを介した認証の実装方法を説明 スタックオーバーフロー。
function mymodule_login_validate($form, &$form_state) {
$username = $form_state['values']['name'];
// do if condition to see if your authentication is required.
// e.g. you might want to keep the drupal administration users.
if (_mymodule_use_webservice_login($username)) {
// We are logging in using service.
if (_mymodule_validate_password($username, $form_state['values']['pass']) {
user_external_login_register($username, 'mymodule');
user_authenticate_finalize($form_state['values'];
} // else drop through to the end and return nothing - Drupal will handle the rejection for us
}
} else {
// Username is not an member number, so use standard Drupal authentication function
user_login_authenticate_validate($form, &$form_state);
}
_mymodule_validate_password()は、認証が行われる場所であり、実装する必要のある他の唯一の関数です。 JSON Webサービスの呼び出しについては、stackoverflowサイトを参照してください。 SSLを介してパスワードを渡すことはあまり良くないので、SSLを使用してみてください。ただし、メインサイトはとにかくSSLではない場合があります。
Webサービスの実装は、関数がTRUEまたはFALSEを返す-drupal_json_outputです。関数コールバックを使用して、メニューを設定する必要があります。関数コールバックは ser_authenticate()。 を呼び出します
また、SSOモジュールの1つを試すこともできます。 http://groups.drupal.org/node/182004 。通常、独自のセキュリティコードを実装しないことをお勧めします。これにより、コードが可能な限り試行されます。