FOSUserBundle: страница сброса пароля находит несуществующего пользователя

Я использую FOSUserBundle с Symfony 3.4.

Я пытаюсь сбросить пароль пользователя, и это работает нормально; Единственная проблема в том, что я могу указать ЛЮБУЮ электронную почту, и статус будет верным, говоря, что электронная почта была отправлена ​​??

Как возможно, что FOS находит несуществующего пользователя? или я что-то пропустил в своем шаблоне?

Насколько я понимаю, блок состояния - это то, что должно отображать ошибку, но это всегда успех.

Я не переопределил ни один из контроллеров по умолчанию

{% extends 'UserBundle:Resetting:request.html.twig' %}

{% trans_default_domain 'FOSUserBundle' %}

{% block status %}
  {{ 'resetting.check_email'|trans({'%tokenLifetime%': tokenLifetime})|nl2br }}
{% endblock %}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
0
201
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, что нет никаких проблем, и, кроме того, это хорошее поведение. Потому что в противном случае человек может легко поглотить множество пользователей, что вызовет проблему безопасности. Так что если пользователь не существует, не больно упоминать. Опять же, если вы внимательно посмотрите на этот класс (в репозитории fosuserbundle) по ссылке: Сброс контроллера, точнее метод sendEmailAction, на уровне 2-й структуры управления, если

if (null !== $user && !$user->isPasswordRequestNonExpired($this->retryTtl))

вы можете заметить, что если пользователь не существует, то почта не отправляется, инструкции внутри if не выполняются, и мы переходим непосредственно к инструкции перенаправления.

return new RedirectResponse($this->generateUrl('fos_user_resetting_check_email', array('username' => $username)));

Вот почему вы все время видите успех. Также это перенаправление выше может быть выполнено, даже если пользователь существует. Вот так я попытался попытаться понять этот процесс.

Другие вопросы по теме