回答:
Drupalがデータベースに保存するものからユーザーのパスワードを取得することはできません。Drupalはパスワードを暗号化せずにデータベースに保存しますが、データベースにパスワードのハッシュを保存します。これは一方向関数から返される値です。つまり、ハッシュを生成した値を計算することはできません。
これが、パスワードではなくハッシュが保存される理由です:誰かがDrupalサイトで使用されているデータベースにアクセスする場合、パスワードを取得し、そのサイトに登録されているユーザーの1人としてそのサイトにアクセスすることはできません。(まったく同じハッシュを持つ単語を見つけることはまだ可能です;これまでのところ、衝突攻撃はMD5でのみ短時間で可能と示されています。)
Drupalはユーザーのパスワードをリセットするためのメールを送信できますが、これはあなたが求めているものではありませんが、Xか月後にユーザーにパスワードをリセットさせたい場合に役立ちます。この場合、_user_mail_notify()で使用されるコードに興味があるかもしれません。
// By default, we always notify except for canceled and blocked.
$default_notify = ($op != 'status_canceled' && $op != 'status_blocked');
$notify = variable_get('user_mail_' . $op . '_notify', $default_notify);
if ($notify) {
$params['account'] = $account;
$language = $language ? $language : user_preferred_language($account);
$mail = drupal_mail('user', $op, $account->mail, $language, $params);
if ($op == 'register_pending_approval') {
// If a user registered requiring admin approval, notify the admin, too.
// We use the site default language for this.
drupal_mail('user', 'register_pending_approval_admin', variable_get('site_mail', ini_get('sendmail_from')), language_default(), $params);
}
}
お願いします!そんなことしないで!
Webアプリケーションにログインシステムを実装するのは簡単です。Webアプリケーションに安全なログインシステムを実装することは、まったく別の問題です。考慮すべき多くの側面と詳細がありますが、Drupalはこれらの側面のほとんどすべてをすぐに使用できるように対処しています。
要求する機能を追加すると、アプリケーションのセキュリティが大幅に低下します。パスワードを復号化できれば、アプリから非常に重要なセキュリティ対策を取り除いただけです。
他の答えは回避策を説明します。BetaRideの答えはあなたが尋ねることをするでしょうが、彼の最後の声明に完全に同意することに注意してください。
非常に一般的な方法で、多かれ少なかれ以下の方法でこれに取り組むでしょう。
カスタムモジュール内
hook_cronを実装すると、選択した基準に一致するすべての電子メールを含む配列が作成されます。
配列をループし、drupal_mail経由でメールを送信します。_user_mail_notify()
上記にリンクされている関数kiamlalunoを調べてください。
ユーザーが一度もログインしたことがない場合は、drupal_mailとhook_mail_alterの組み合わせを使用してパスワードのリセットメールを送信する必要があります(ここではわかりません)。
これが役立つことを願っています。これまでのところ、Drupalの経験に似たようなものを実装していないため、少し大ざっぱなことを知っています。安全な方法でユーザーに通知する方法についていくつかのアイデアを汲み出していました。電子メールにプレーンテキストのパスワードを使用する方法には多くの選択肢があります。
幸運の友人、あなたに乾杯&新年あけましておめでとうございます!
アカウントパスワードトークンモジュールを使用して、パスワードをメールで送信できます
実験プロジェクト
これは、開発者が使用するための実験的なコードを含むサンドボックスプロジェクトです。
この小さなモジュールは、アカウントの電子メール設定用のユーザーアカウントパスワードトークンを提供します。サイト管理者は、以下の設定でユーザーへのパスワードの送信を許可しました–
- ようこそ(管理者が作成した新しいユーザー)
- ようこそ(承認不要)
- アカウント開設
- ようこそ(承認不要、パスワードが設定されています)
- パスワードの復元
[user:one-time-login-url]
。