web-dev-qa-db-ja.com

パスワードを使用してユーザーをエクスポートする方法は?

パスワードを使用してユーザーをエクスポートする方法は? sers export モジュールは役に立ちません。パスワードなしでエクスポートします。

3
Vic Nicethemer

ユーザーパスワードは 一方向ハッシュアルゴリズム を使用して保存され、プレーンテキストに変換できません。さらに、各Drupalサイトは 一意の暗号化ソルト を使用するため、2つのDrupal=サイトで同じ平文パスワードが生成されることはありません。同じハッシュ化パスワード。

つまり、ユーザー名とプレーンテキストのパスワードのリストを生成する方法はありません。

8
mpdonadio

@ MPDが言うように の場合、これを行うことはできませんが、すべてのユーザーをエクスポートしてランダムなパスワードでインポートし、次の方法でパスワードを設定できます。

  • Mass Password Reset モジュールを使用して、すべてのユーザーアカウントをリセットし、すべてのユーザーに通知します。

  • Force Password Change を使用して、ユーザーに次回のログイン時にパスワードの変更を強制します。

参照

定期的にユーザーの新しいパスワードを生成し、ユーザーに新しいパスワードを通知する

3

非常に限られた使用例では、特定のユーザーが他のユーザーのパスワードを見ることができるようにする必要がある場合があります。 [〜#〜] aes [〜#〜] モジュールを使用できます。

ただし、これらのパスワードをエクスポートするには、AESモジュールの復号化メカニズムを使用してカスタムモジュールを作成する必要があります(パスワードはプレーンテキストとしても保存されないため)。

警告の注記:ユーザーに他のユーザーのパスワードを表示させる必要があるかどうかを確認することを強くお勧めします。これは、サイトに大きなセキュリティの影響があり、多くのユーザーが異なるWebサイトで同じパスワードを使用しているため、Web上のユーザーの他のプロファイルのセキュリティに影響を与えます。

編集:要件についてさらに洞察を提供した後、Drupalのときに別のアプリケーションでパスワードを変更する方法=ユーザーは新しいパスワードを設定します。ハッシュ化せずに保存する必要はありません。

カスタムモジュール を作成する必要があります。次のフックを実装します(MYMODULEをモジュール名に置き換えます)。

/**
 * Implements hook_form_alter().
 */
function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  // Alter all forms that allow editing the password:
  switch ($form_id) {
    case 'user_register_form':
    case 'user_profile_form':
      // Add an own submit handler to the user forms.
      $form['#submit'][] = 'MYMODULE_set_password_submit';
      break;
  }
}

/**
 * Submit handler setting the password in the third-party application.
 */
function MYMODULE_set_password_submit($form, &$form_state) {
  // Whether the password was changed.
  if (!empty($form_state['values']['pass'])) {
    // Get the password.
    $password = $form_state['values']['pass'];

    // And now you can use the contents of $password to call
    // your other applications API for resetting passwords or
    // hashing / setting the password using direct database
    // access.

  }
}
2
Mario Steinitz

古いデータベースのユーザーテーブルからデータ(構造とデータではない)のみをエクスポートし、これを新しいデータベースにインポートするだけです。パスワードを持つすべてのユーザーもこの方法でエクスポートできます

0
Nabanita Nazir