パスワードを忘れて新しいパスワードをメールで送信するユーザー向けのページを設計する必要があるアプリを開発しています。ASP.NET メンバーシップを使用しており、パスワード形式はハッシュ化する必要があります。
私の問題は、メールの送信に失敗したとき、パスワードが変更されたときです。仕事はできません。
あなたの解決策は何ですか?
パスワードを忘れて新しいパスワードをメールで送信するユーザー向けのページを設計する必要があるアプリを開発しています。ASP.NET メンバーシップを使用しており、パスワード形式はハッシュ化する必要があります。
私の問題は、メールの送信に失敗したとき、パスワードが変更されたときです。仕事はできません。
あなたの解決策は何ですか?
パスワードのリセットを確認できるリンクが記載された電子メールをユーザーに送信する必要があります (そうしないと、電子メールを推測して他のユーザーのパスワードをリセットする可能性があります)。リンクされたページで、ユーザーはパスワードのリセットを確認します (または自分で変更することさえあります)。
ただし、どのような形や形式でもパスワードを送信しないことをお勧めします。最も安全です。
プロセス
影響を受けるユーザーのpasswordFormat値を aspnet_Membership テーブルで一時的に "Clear" に設定し、パスワードを割り当ててから、電子メールが機能するように作業することができます。
aspnet_Membership.passwordFormat の値を 0 に設定すると、形式がクリア テキストに変更されます。つまり、暗号化されません。安全ではありませんが、ログインできます。その後、パスワードをリセットすると、2 (暗号化) に戻ります。
データベースへの変更を実際にコミットする前に、電子メールが正常に送信されたかどうかを判断できる場合、これは適切なオプションです。これは常に当てはまるわけではありませんが、アプリケーションで機能する可能性があります。
通常、私の経験では、電子メールが失敗した場合、ASPは例外をスローします。これが発生した場合は、DBで何もしないでください。メールが通過した場合は、パスワードを変更してください。それは彼らが電子メールを受け取るという意味ではありませんが、とにかく電子メールの旅行中の問題を説明することはできません。上記のオプションは、これが失敗した後に適用されます。;)
asp.netでこのような機能がサポートされているかどうかはわかりません。
ただし、一部のWebサイトでは、クリックするためのリンクが記載された電子メールが送信されます(数日で期限切れになります)。これをクリックすると、そのアクションにコミットしていることを確認できます(つまり、パスワードは、電子メールを受信して受信したリンクをクリックした後でのみ変更されます)。
ASP.NETは、電子メールが機能しない場合のパスワード回復への質問と秘密の回答のアプローチもサポートしています。
ユーザーはパスワードを再度変更する必要があります。メールが成功することを願っています。
間違ったアドレスを入力した場合は、メール アドレスを修正できる管理者に連絡する必要があります。