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