Я надеюсь реализовать опцию Forgot Password на своем веб-сайте. Мне нравится опция, где электронное письмо, содержащее временный одноразовый URL использования, который истекает через какое-то время, послано пользователю.
Я посмотрел на следующие страницы для получения этих идей, но я не уверен, как реализовать это использование ASP.NET и C#. Как один из пользователей указал, если я могу реализовать это, не храня эту информацию в базе данных, которая будет идеальна. Советуйте.
Сброс пароля путем пользования электронной почтой временных паролей
Спасибо.
В зависимости от ваших потребностей, вы можете зашифровать информацию в формате, похожем на следующий формат
(UserId)-(ExpireDate)
Шифруйте данные, сделайте эту ссылку, затем расшифруйте данные и действуйте оттуда....
Грубые, но, скорее всего, пригодные для использования и не требующие использования БД
.Вероятно, самым простым способом будет модификация вашей таблицы пользователей для добавления 2 дополнительных столбцов, ИЛИ если вы не хотите модифицировать существующую таблицу, вы можете добавить новую зависимую таблицу под названием "UserPasswordReset" или что-то в этом роде. Столбцы выглядят следующим образом:
PasswordResetToken UNIQUEIDENTIFIER,
PasswordResetExpiration DATETIME
Если вы используете дополнительный маршрут таблицы, вы можете также добавить колонку UserID, сделать ее первичным ключом и ссылку на ключ foriegn обратно в вашу таблицу пользователей. Также рекомендуется ограничение UNIQUE. Затем вы просто используете в качестве токена руководство в вашем приложении asp.net.
Поток может быть примерно таким:
Я знаю, что вы хотели избежать изменения базы данных, но на самом деле это, пожалуй, самый простой метод.
.Здесь класс System.Guid в вашем друге, так как он сгенерирует уникальное (ну, достаточно уникальное) 128-битное число:
Я использовал Хэшинг-класс для создания уникальных автоматических входов, состоящих из текущей даты/времени и адреса электронной почты пользователей:
string strNow = DateTime.Now.ToString();
string strHash = strNow + strEmail;
strHash = Hash.GetHash(strHash, Hash.HashType.SHA1);
получить Хэшинг-класс от: http://www.developerfusion.com/code/4601/create-hashes-md5-sha1-sha256-sha384-sha512/
Затем просто взять его из URL, используя:
if (Request.QueryString["hash"] != null)
{
//extract Hash from the URL
string strHash = Request.QueryString["hash"];
}