Неаутентифицированные пользователи
Мы делаем 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"
}