Skip to content

Відновлення пароля в 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#?

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

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

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

https://dijix.com.ua

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


 

Published inAsp.Net Core
Subscribe
Notify of
guest
0 комментариев
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x