Перейти к содержанию

Восстановление пароля в ASP.NET Core Identity

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

[ Полезный рекламный блок ]

Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.


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

Процесс сброса пароля не должен вовлекать администраторов приложений, поскольку пользователи сами должны быть в состоянии пройти через весь процесс самостоятельно. Обычно на странице входа в систему пользователю предоставляется ссылка «Забыли пароль«, и в данной статье речь пойдет именно об этом.

Итак, давайте рассмотрим, как должен работать процесс сброса пароля.

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

Восстановление пароля в Asp.Net Core Identity

  1. Восстановление пароля
  2. Определение классов и действий для генерации и отправки ссылки
  3. Определение действий для сброса пароля

Чтобы писать вместе со мной, вам придется установить .NET Core 2.2, а также Visual Studio 2017-2022. Вы также можете использовать другую IDE вместо Visual Studio.

ВАЖНО! Создание проекта, добавление Identity, разработка страницы авторизации и регистрации не рассматривается в этой статье. Добавление Identity в проект с нуля, добавление возможности авторизации, регистрации и ролей, вы можете рассмотреть на этом прекрасно сайте — Metanit. Мы же сконцентрируемся только на теме «Восстановления пароля в ASP.NET Core Identity».

Восстановление пароля

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

Сначала добавим метод расширения AddDefaultTokenProviders, в класс Program.cs, чтобы включить генерацию токенов в приложении, для этого добавим вызов метода к AddIdentity:

Identity создаст токен после отправки письма со сбросом пароля. Этот токен будет использоваться для соответствия запросу, приходящему в Identity, когда пользователь нажимает на письмо со сброшенным паролем. Identity убедится, что токен действителен и не просрочен, прежде чем разрешить пользователю сбросить пароль. Отличная функция, не правда ли?

Мы также можем установить время действия токена, добавив приведенный ниже код в класс Program.cs:

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

Определение классов и действий для генерации и отправки ссылки

Начнем с добавления нового метода действия ForgotPassword в контроллере AccountController. Работа действия будет заключаться в отправке электронного письма на почтовый ящик пользователя со ссылкой для сброса пароля.

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

Мы создали токен сброса пароля с помощью метода GeneratePasswordResetTokenAsync класса UserManager<T>. Затем мы добавили этот токен к ссылке. Эта ссылка будет использоваться как ссылка сброса пароля. 

Теперь установим зависимости, если они еще не установлены в вашей IDE:

  • MailKit
  • MimeKit

mailkit asp.net core

Можно также выполнить установку через Package Manager Console:

Затем мы вызвали метод SendEmailPasswordReset() класса EmailHelper, чтобы отправить письмо пользователю.

Добавим в проект папку Helpers и в ней определим класс EmailHelper, со следующим содержимым:

Как выполнять отправку письма, получать пароли приложений, детально рассматривается в статье «Отправка Email в Asp.Net Core«.

Теперь определим представления для сброса пароля, в папке ViewsAccount.

Добавим представление ForgotPassword.cshtml, со следующим содержимым:

Так же, добавим представление ForgotPasswordConfirmation.cshtml, со следующим содержимым:

Теперь на страницу Login.cshtml, добавим ссылку для сброса пароля:

Запустим приложение и проверим его работу. На данном этапе, пользователь может нажать по ссылке “Забыли пароль?”, ввести свой емейл адрес.

ASP.NET Core Identity. Восстановление пароля

После этого на его почту должна прийти ссылка, для сброса пароля (еще недействующая):

Восстановление пароля в C#

Теперь пришло время позволить пользователю создать свой новый пароль.

Определение действий для сброса пароля

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

Ссылка направляет пользователей на действие ResetPassword контроллера Account. Поэтому добавим действие ResetPassword вместе с другим действием под названием ResetPasswordConfirmation в контроллер Account:

Метод действия ResetPassword в версии HTTP GET вызывается, когда пользователь нажимает на ссылку сброса пароля в своем письме. Работа этого метода действия заключается в получении токена и адреса электронной почты и привязке их к представлению.

Затем пользователь заполняет новый пароль и пароль подтверждения на странице View (т.е. ResetPassword.cshtml) и нажимает кнопку для сохранения. При этом вызывается HTTP POST-версия метода действия ResetPassword. Этот метод действия получает новый пароль, электронную почту пользователя и токен через привязку к модели.

Код, создающий новый пароль пользователя, следующий:

Далее нам нужно создать класс ResetPassword.cs в папке Models со следующим кодом:

Теперь определим представления для установки пароля, в папке ViewsAccount.

Добавим представление ResetPassword.cshtml, со следующим содержимым:

Добавим представление ResetPasswordConfirmation.cshtml, со следующим содержимым:

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

Запустите приложение и попробуйте сбросить пароль. Надеюсь, вам понравилась эта статья. Вы можете скачать исходный код в моем репозитории — Github.

Поделитесь вашим опытом в комментариях, как вы организуете восстановление пароля в Asp.Net Core приложениях?

Так же вам может быть интересна предыдущая статья — Необработанные строковые литералы или же статья на тему:

Google Авторизация с Identity

Вы начинающий программист, который хочет изучить все тонкости языка C#?

Пройдите наш тест на 13 вопросов, чтобы узнать, как много вы знаете на самом деле!

C# Braincheck


Вы хотите научится писать код на языке программирования C#?

Создавать различные информационные системы, состоящие из сайтов, мобильных клиентов, десктопных приложений, телеграмм-ботов и т.д.

Переходите к нам на страницу Dijix и ознакомьтесь с условиями обучения, мы специализируемся только на индивидуальных занятиях, как для начинающих, так и для более продвинутых программистов. Вы можете взять как одно занятие для проработки интересующего Вас вопроса, так и несколько, для более плотной работы. Благодаря личному кабинету, каждый студент повысит качество своего обучения, в вашем распоряжении:

  • Доступ к пройденному материалу
  • Тематические статьи
  • Библиотека книг
  • Онлайн тестирование
  • Общение в закрытых группах

https://dijix.com.ua

Живи в своем мире, программируй в нашем.


 

Опубликовано в рубрикеAsp.Net Core
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x