私はこの多くをグーグルで検索しましたが、残念ながら実用的なソリューションは見つかりませんでした。
悪いテクニックを知っていますが、パスワードをメールでユーザーに送信する必要があります。
ユーザーハッシュパスワードを送信できましたが、このパスワードを解読できません。
以下は私が使用している手順です。
$results = DB::select("select * from dockl_users where email='" . Input::get('email') ."';");
foreach($results as $data){
$password= $data->password;
$email= $data->email;
}
Mail::send('passwordRecovery', array('email' =>$password), function($message)
{
$message->to(Input::get('email') )->subject('Password Recovery');
});
上記のコードはEncrypted
パスワードをメールでユーザーに送信しますが、復号化しようとすると、次のエラーメッセージが表示されます。
$decrypt= Crypt::decrypt($data->password);
無効なデータ。
throw new DecryptException("Invalid data.");
これを実現する方法を教えてください。
簡単な答えは、パスワードを「復号化」しないことです(暗号化されていないため、ハッシュ化されているため)。
長い答えは、ユーザーにパスワードをメールで送信したり、他の方法で送信したりしないことです。ユーザーがパスワードを忘れた場合は、password resetメールを送信し、ウェブサイトでパスワードを変更できるようにする必要があります。
Laravelには、この機能のほとんどが組み込まれています( Laravelドキュメント を参照してください。ここではすべてを複製しません。バージョン 4.2 および 5. Laravelの)。
詳細については、「blogoverflow」の投稿をご覧ください: なぜパスワードをハッシュする必要があるか 。
ハッシュされたパスワードとプレーンテキストのパスワード文字列を比較するには、PHP password_verify
if(password_verify('1234567', $crypt_password_string)) {
// in case if "$crypt_password_string" actually hides "1234567"
}