0

Drupalは初めてですが、ハードコーディングのように、Drupal 7 のログイン機能をハック/カスタマイズしたいだけです。Drupal 7 のログイン プロセスがuser.moduleとその関連ファイルによって処理されていることを発見しました。

ユーザー名/パスワードのみを指定してユーザーのログ記録/認証プロセスを実行したときに、どの種類の値またはプロパティが返されているか、または提供されているかを知りたいだけです。

Drupal に返される (認証プロセス全体に沿って) 返される最終的なプロパティは次のとおりです。

  • 試行されたユーザーの {uid}
  • {rid} ユーザーの役割 ID
  • ユーザーの電子メール
  • ユーザーがブロックされているかどうか
  • それから .. ?

ポイントは..他に何がありますか?
既存の認証プロセス全体を置き換え/変更できますか? (必要に応じて)

たとえば、 のデフォルトの認証機能の 1 つuser.module:

function user_authenticate($name, $password) {
    ..
    return $uid;
}

たとえば、その関数を変更 (ハードコード) して他の外部データベースに接続し、{user id} を返すと、Drupal は 1 つの認証要件を取得します{uid}。では、他に何を提供すればよいでしょうか?ユーザーの役割と..などなど?

そのように..認証プロセスに沿って、他にどのような機能とプロパティに触れてDrupalに提供する必要がありますか?

4

2 に答える 2

2

これは実際の回答ではありませんが、コメントとして投稿することはできません。

基本的にコアのハックは行いません。したがって、user.module のコードを調べても、フックを学習するよりもあまり役に立ちません。たとえば、hook_nodeapi() のコードを見て、ノードを作成するときにマジックを追加する方法を理解するのは困難です。しかし、ドキュメントと戻り値/入力引数を確認すると、作業がはるかに簡単になります。

hook_form_alter() を使用して、ログイン フォームにサブミット ハンドラを追加することから始めます。あなたのユース ケースに関する他のスレッドを見ましたが、残念ながらサンプル コードを提供するのは困難です。他のモジュールが追加の認証を実装する方法を確認できます (例: http://bit.ly/LdRcm6 )。(Remember Me モジュールがログイン フォームにチェックボックスを追加する方法と、Twitter のログインを可能にする twitter モジュールを参照してください)。

次に、Drupal で通常どおりユーザーを認証し、Drupal の認証に加えて新しいカスタム機能を使用できます。

Drupal は、Drupal であるかどうかに関係なく、外部データベースに接続することもできます。

多くの関数でわかるように、これらはブール値または場合によってはユーザー ID を返します。user_load() は、基本的なユーザー オブジェクトをロードする関数です。

モジュラーであることを忘れないでください。一部のモジュールは、hook_user_load() を使用してこれらの値を含めたり、削除したり、変更したりできます。ユーザー用語モジュールとプロファイル モジュールは、ここでの完璧な例です。他のモジュールがユーザー情報を必要とする場合、プロファイル フィールド情報が含まれます。

1 人のユーザーは単なる情報の集まりではありません。プロセスのどの部分でも変更できます。そうしてください。モジュールを使用して、外部サイトにある情報を提供します。

{uid} of the attempted user
{rid} role id of the user
user email
user is blocked or not
user last login time.
user register date.
...

サイトのオブジェクト全体を表示するには、次のように入力します。

<pre>
<?php
$user_account = user_load (1);
print_r($user_account);
?>
</pre>

このコードは、php フィルターを使用しているノード作成ページに入力できます。

ハードコーディングしなくても、他のモジュールがこれらの値を利用できるようにすることができます。ソース データベースにロール ID がない場合でも、ロール ID、ユーザー ID などを提供できます。

幸運を!

于 2012-07-02T01:30:52.740 に答える
1

Drupal は拡張可能なシステムです。「ユーザー」モジュールのようなコア モジュールで「ハードコーディング」を行う必要はありません。むしろ、コア (および貢献した) モジュールを拡張できるフック システムを検討する必要があります。

また、別のデータベースからユーザー ID を取得したい場合 (このユースケースについてはよくわかりません)、Drupal のデータベースからロールやその他のユーザー データを引き続き使用できます。

于 2012-07-01T18:05:44.250 に答える