Итак, я играл с asp:PasswordRecovery
и обнаружил, что он мне действительно не нравится по нескольким причинам:
1) Пароль Алисы можно сбросить, даже не имея доступа к электронной почте Алисы. Секретный вопрос для сброса пароля смягчает это, но на самом деле не удовлетворяет меня.
2) Новый пароль Алисы отправляется обратно ей в виде открытого текста. Я бы лучше отправил ей специальную ссылку на мою страницу (например, страницу, например example.com/recovery.aspx?P=lfaj0831uefjc), которая позволила бы ей сменить пароль.
Полагаю, я мог бы сделать это сам, создав некую таблицу страниц восстановления пароля с истекшим сроком и отправив эти страницы пользователям, которые просили сбросить данные. Каким-то образом эти страницы могут также изменять пароли пользователей за кулисами (например, путем их сброса вручную и последующего использования текста нового пароля для изменения пароля, поскольку пароль не может быть изменен без знания старого). Я уверен, что другие уже сталкивались с этой проблемой раньше, и такое решение кажется мне немного странным. Есть ли лучший способ сделать это?
Идеальное решение не нарушает инкапсуляцию путем прямого доступа к базе данных, а вместо этого использует существующие хранимые процедуры в базе данных ... хотя это может быть невозможно.