Я использую 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 %}




Я думаю, что нет никаких проблем, и, кроме того, это хорошее поведение. Потому что в противном случае человек может легко поглотить множество пользователей, что вызовет проблему безопасности. Так что если пользователь не существует, не больно упоминать. Опять же, если вы внимательно посмотрите на этот класс (в репозитории fosuserbundle) по ссылке: Сброс контроллера, точнее метод sendEmailAction, на уровне 2-й структуры управления, если
if (null !== $user && !$user->isPasswordRequestNonExpired($this->retryTtl))
вы можете заметить, что если пользователь не существует, то почта не отправляется, инструкции внутри if не выполняются, и мы переходим непосредственно к инструкции перенаправления.
return new RedirectResponse($this->generateUrl('fos_user_resetting_check_email', array('username' => $username)));
Вот почему вы все время видите успех. Также это перенаправление выше может быть выполнено, даже если пользователь существует. Вот так я попытался попытаться понять этот процесс.