Это интересное использование, и я считаю, что это приемлемая практика. Но это не исключение из правил. В основном, как обычно это делается, вы должны инициировать сброс пароля заранее другим способом, обычно, вводя свое имя пользователя или адрес электронной почты в форму POST.
Вы можете рассматривать этот запрос POST как операцию, которая сбрасывает ваш пароль. Но даже если вы начали процесс сброса пароля, система все равно должна подтвердить вашу личность. Обычно это делается путем отправки SMS-сообщения или электронного письма с кодом / маркером безопасности, связанным с этим запросом POST. Весь процесс должен быть завершен, чтобы система могла получить этот код от вас любым возможным способом. Вы можете либо ввести его в другую форму POST (например, если вы получите его по SMS), либо он может быть встроен в ссылку электронной почты.
Так что, хотя, технически говоря, ваш последний запрос GET имеет побочный эффект, он все еще является идемпотентной операцией. Поскольку эта ссылка сама по себе ничего не делает, если вы уже не сделали предыдущий запрос POST, чтобы начать процесс сброса. И любые последующие запросы к этому GET URL не будут иметь никакого эффекта.
Edit:
Думаю, также следует отметить, что размещение ссылки в электронном письме позволяет обойти проблему, связанную с тем, что веб-сканеры случайно запускают ваши неидемпотентные операции. Кроме того, тот факт, что большинство таких ссылок сразу перенаправляют на страницу без побочных эффектов, и тот факт, что сама страница имеет токен одноразового использования, означает, что кнопки возврата и обновления не могут вызывать нежелательных побочных эффектов. либо.