Неавторизовані користувачі
Ми робимо PUT
запит у api/v1/account/password
кінцевій точці та вимагаємо параметр із відповідною електронною поштою облікового запису для ідентифікації облікового запису, для якого користувач хоче скинути (оновити) пароль:
PUT : /api/v1/account/password?email={email@example.com}
Примітка. Як згадував @DougDomeny у своєму коментарі, передача електронної пошти як рядка запиту в URL- адресі є ризиком для безпеки. Параметри GET не піддаються впливу під час використання https
(і ви завжди повинні використовувати належне https
з'єднання для таких запитів), але є інші ризики безпеки. Більше про цю тему ви можете прочитати в цій публікації в блозі тут .
Передача електронної пошти в орган запиту була б більш безпечною альтернативою передачі її як параметр GET:
PUT : /api/v1/account/password
Орган запиту:
{
"email": "email@example.com"
}
Відповідь має 202
прийняте значення відповіді:
Запит прийнято для обробки, але обробка не завершена. Зрештою на цей запит не може бути застосовано, оскільки це може бути заборонено, коли обробка фактично відбувається. Немає можливості повторного надсилання коду стану з асинхронної операції, такої як ця.
Користувач отримає електронний лист на адресу email@example.com
та обробка запиту на оновлення залежить від дій, здійснених із посиланням з електронного листа.
https://example.com/password-reset?token=1234567890
Відкриття посилання з цього електронного листа направить на форму скидання пароля на додатковому додатку, який використовує маркер пароля скидання з посилання як вхід для прихованого поля введення (маркер є частиною посилання як рядок запиту). Ще одне поле введення дозволяє користувачеві встановити новий пароль. Другий вхід для підтвердження нового пароля буде використаний для перевірки на передній панелі (щоб запобігти помилкам друку).
Примітка: В електронному листі ми також можемо зазначити, що у випадку, якщо користувач не ініціалізує скидання пароля, він / вона може ігнорувати електронну пошту та продовжувати користуватися програмою, як правило, своїм поточним паролем
Коли форма подається з новим паролем та маркер як вхід, відбудеться процес скидання пароля. Дані форми будуть надсилатись із PUT
запитом ще раз, але на цей раз, включаючи маркер, і ми замінимо пароль ресурсу на нове значення:
PUT : /api/v1/account/password
Орган запиту:
{
"token":"1234567890",
"new":"password"
}
Відповідь буде 204
не зміст відповіді
Сервер виконав цей запит, але йому не потрібно повертати тіло об'єкта і, можливо, захоче повернути оновлену інформацію. Відповідь МОЖЕ включати нову або оновлену метейнформацію у вигляді заголовків сутностей, які, якщо вони є, ОБОВ'ЯЗКОВО бути пов'язані із запитуваним варіантом.
Автентифіковані користувачі
Для аутентифікованих користувачів, які хочуть змінити свій пароль, PUT
запит можна виконати негайно без електронної пошти (обліковий запис, на який ми оновлюємо пароль, відомий серверу). У такому випадку у форму надсилаються два поля:
PUT : /api/v1/account/password
Орган запиту:
{
"old":"password",
"new":"password"
}