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