0

私はDrupal6を初めて使用し、次の機能を実装する方法を長い間探していましたが、成功しませんでした。Webアプリのフロントエンド/ドキュメントボードとしてDrupalを使用しています。このWebアプリでのすべてのユーザーアカウントの作成、更新、削除をミラーリングしたい。つまり、ユーザー名とパスワードを送信したい。

実装する小さなモジュールhook_userhttp://api.drupal.org/api/function/hook_user/6)のコーディングを開始しましたが、このフックに関するいくつかの質問についてはまだ疑問に思っています。

1)フィールドに関するドキュメントが見つからないため$account、ユーザー名とパスワードを取得する方法がわかりません。
2)insert操作は「ユーザーアカウントが追加されています」と通知します。これは、ユーザーがアカウントにクエリを実行したとき、または保留中のアカウントの作成が承認されたときにトリガーされますか?
3)「スレーブ」Webアプリケーションでのユーザー管理は、URLインターフェースを介して行われます。私はPHPプリミティブしか知りませんが、header("Location: http://webapp/users/add?user=martin&pwd=bla")これによってターゲットページにアクセスしてコードフローを続行するのではなく、リダイレクトが行われるのではないかと心配しています。なにか提案を?

たぶん、あなたの何人かはすでにそのようなモジュールをプログラムしましたか、またはより多くのドキュメントへのリンクを持っているでしょうか?
よろしくお願いします、
マーティン

4

4 に答える 4

0

一歩下がって全体像を見ると、いくつかの選択肢があります。

  1. 両方のサイトにOpenID(コアDrupalモジュールがあります)を使用します
  2. LDAPを使用します(非常に優れたDrupal contribモジュールがあります)
  3. インスピレーションを得るために、他のアプリ( http://drupal.org/project/phpbbhttp://drupal.org/project/moodleなど)とのユーザーログイン共有を提供する他のモジュールを見てください。
  4. WebアプリにDrupalのユーザーテーブルを使用させます。ユーザー名はプレーンテキストであり、パスワードはMD5であるため、これは比較的簡単です(したがって、塩や水を濁すものはありません)。
于 2010-01-22T17:15:55.790 に答える
0

これが機能する最後のコードです。パスワードはmd5ifiedで取得されるため、スレーブWebアプリも同様に取得できる必要があることに注意してください。

function mirror_registration_user($op, &$edit, &$account, $category = NULL) {
 $cmd = 'http://www.example.com/register?name='.$account->name.'&pass='.$account->pass;

 if($op == 'insert'){
$cmd .= '&op=insert';
drupal_http_request( $cmd );
 }
 else if($op == 'delete'){
$cmd .= '&op=delete';
drupal_http_request( $cmd );
 }
 else if($op == 'after_update'){ // 'update' is a "before update event"
$cmd .= '&op=update';
drupal_http_request( $cmd );
 }
}

備考:この場合、登録には管理者の承認が必要です。この場合、「更新」イベントがあります。「挿入」イベントは、ユーザーがアカウントを照会するとすぐにトリガーされます。

他の初心者のための情報:

  • コードをデバッグしようとすると、$ cmdをエコーし​​て、次のページの左上に$cmdの内容を書き込むことができます。
  • ひどいphpコードを記述し、フックを使用したときに空白のページが表示される場合は、Drupal / index.phpに次の呼び出しを追加できます。error_reporting(E_ALL); ini_set('display_errors'、TRUE); ini_set('display_startup_errors'、TRUE); デバッグ情報を持つことができます。

  • 于 2010-01-25T15:53:46.983 に答える
    0

    基本的に hook_user は間違っています。必要なことは、hook_form_alter を使用して、ログイン フォームの「#validate」パラメーターを変更することです。そうすれば、検証がモジュール内の関数に渡され、そこで $form_values['username'] と $form_values['password'] が取得されます。それをcurl経由で URL に渡します。正しく返された場合は、何も返されません。戻らない場合は、form_set_error を使用すると、ログインが拒否されます。

    幸運を!

    于 2010-01-22T18:35:24.237 に答える
    0

    ページから応答を取得するには、drupal_http_request()を使用できます。

    また、一般的なセキュリティ上の注意として、アプリケーション間のリクエストを認証および検証していることを確認してください。HTTP 経由で GET パラメーターを介してプレーン テキストでパスワードを渡すのも、少しうんざりしますが、アプリケーションの設定がわかりません。

    于 2010-01-22T19:29:34.200 に答える