УСПОКОИТЕЛЬНЫЙ сброс пароля

Что надлежащий путь состоит в том, чтобы структурировать УСПОКОИТЕЛЬНЫЙ ресурс для того, чтобы изменить пароль?

Этот ресурс предназначен, чтобы быть паролем resetter для кого-то, кто потерял или забыл их пароль. Это делает недействительным их старый пароль и посылает им по электронной почте пароль.

Две опции, которые я имею:

POST /reset_password/{user_name}

или...

POST /reset_password
   -Username passed through request body

Я вполне уверен, запросом должен быть POST. Я менее уверен, что выбрал соответствующее имя. И я не уверен, должен ли user_name быть передан через URL или тело запроса.

95
задан Darrel Miller 6 August 2010 в 13:41
поделиться

2 ответа

UPDATE: (продолжение комментария ниже)

Я бы выбрал что-то вроде этого:

POST /users/:user_id/reset_password

У вас есть коллекция пользователей, где отдельный пользователь указан {имя_пользователя}. Затем вы указываете действие, которое нужно выполнить, в данном случае это reset_password. Это все равно что сказать: "Создайте (POST) новое действие reset_password для {имя_пользователя}".


Предыдущий ответ:

Я бы выбрал что-то вроде этого:

PUT /users/:user_id/attributes/password
    -- The "current password" and the "new password" passed through the body

У вас есть две коллекции, коллекция пользователей и коллекция атрибутов для каждого пользователя. Пользователь задается :user_id, а атрибут задается password. Операция PUT обновляет адресованный член коллекции.

52
ответ дан 24 November 2019 в 05:50
поделиться

Давайте на секунду перейдем к Uber-RESTful. Почему бы не использовать действие DELETE для пароля, чтобы вызвать сброс? Имеет смысл, не так ли? В конце концов, вы фактически отказываетесь от существующего пароля в пользу другого.

Это означает, что вы бы сделали:

DELETE /users/{user_name}/password

Теперь два больших предостережения:

  1. HTTP DELETE должен быть идемпотентным (красивое слово для выражения «ничего страшного, если вы сделаете это несколько раз») . Если вы выполняете стандартные действия, например, отправляете электронное письмо для сброса пароля, то столкнетесь с проблемами. Вы можете обойти это, пометив пользователя / пароль логическим флагом «Сброс». При каждом удалении вы проверяете этот флаг; если он не установлен , то вы можете сбросить пароль и отправить свой адрес электронной почты. (Обратите внимание, что наличие этого флага может иметь и другое применение.)

  2. Вы не можете использовать HTTP DELETE через форму , поэтому вам придется сделать вызов AJAX и / или туннелировать DELETE через POST.

17
ответ дан 24 November 2019 в 05:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: