FOSUserBundle: страница сброса пароля находит пользователя, который не существует - PullRequest
0 голосов
/ 31 января 2019

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

1 Ответ

0 голосов
/ 01 февраля 2019

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

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

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

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

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

...