2009-07-21 4 views
0

Я разрабатываю приложение, которое я должен разработать страницу для пользователей, которые забывают пароли и отправляют им новые пароли. Я использую членство в ASP.NET, и формат пароля должен быть хэширован.Проблема при сбросе пароля в ASP.NET

Моя проблема в том, что отправка почты была неудачной, пароль был изменен и ничего себе! никакая работа не может быть выполнена.

Каково ваше решение?

ответ

1

Вы должны отправить пользователям электронное письмо со ссылкой, где они могут подтвердить сброс пароля (в противном случае вы могли бы сбросить пароли другим пользователям, угадывая их электронные письма). На связанной странице пользователи затем подтвердят сброс пароля (или даже сами изменит его).

Но лучше не передавать пароли в какой-либо форме или форме. Это самый безопасный.

Процесс

  1. Пользователи запрашивают сброс пароля с помощью своей электронной почты.
  2. Они получают электронное письмо со ссылкой
  3. Theyclick ссылку и предоставить новый пароль, который сразу же получает хэширование и хранится в системе.
+0

отлично! но я могу хэшировать пароль так, как это делает ASP.NET, я имею в виду, могу ли я сохранить его непосредственно в таблице Users. –

+0

Вы можете вызвать Memberhip.UpdateUser и установить новый пароль. –

0

Пользователь должен сменить пароль еще раз, и, надеюсь, письмо будет успешным.

Если они указали неверный адрес, им следует обратиться к администратору, который может исправить свой адрес электронной почты.

0

Если вы можете сообщить, успешно ли отправлено электронное письмо до того, как вы действительно зафиксируете изменение в базе данных, это будет хорошим вариантом. Это не всегда так, но, возможно, это может сработать для вашего приложения.

Обычно с моим опытом ASP будет вызывать исключение, если сообщение электронной почты не удастся. Если это произойдет, ничего не делайте в БД, если почта проходит, измените пароль. Это не означает, что они получат электронное письмо, но в любом случае вы не можете учитывать проблемы во время поездок по электронной почте. Вышеприведенный вариант будет применяться после этого. ;)

+0

Пропущенный на несколько секунд;) – shahkalpesh

+0

это хорошее решение, но пользователь видит два электронной почты один для теста и один для него passord, и это не хорошо. –

0

Я не знаю поддержки такой функции в asp.net.

Но, некоторые веб-сайты отправляют вам электронное письмо со ссылкой на клик (срок действия которого истекает через несколько дней). Нажав на нее, убедитесь, что вы совершаете это действие (т. Е. Пароль изменяется только после того, как они получают по электронной почте & по полученной ссылке).

+0

Вы имеете в виду, что у меня должна быть таблица для хранения случайного значения для пользователя, чтобы проверить, что пользователь был тем пользователем, которым я отправил это письмо? –

0

ASP.NET также поддерживает вопрос и секретный подход к восстановлению пароля, если адрес электронной почты не работает.

1

Вы можете временно установить значение passwordFormat для пострадавших пользователей «Clear» в таблице aspnet_Membership, присвоить им пароль, а затем работать на получение электронной почты работу.

Установка значения aspnet_Membership.passwordFormat в 0 изменяет формат на «Очистить текст», что означает, что он не зашифрован. Это не безопасно, но разрешает вход в систему. После этого вы можете сбросить пароль, и он будет изменен на 2 (зашифрован).

alt text

+0

это хорошее решение, но я не уверен, что он работает или нет? Ты уверен? –