FOSUserBundle:重置密码页面发现用户不存在

FOSUserBundle: resetting password page finds user that does not exist

我在 Symfony 3.4 中使用 FOSUserBundle

我正在尝试重置用户密码,但效果很好;唯一的问题是我可以输入任何电子邮件,并且状态为真,表示电子邮件已发送 ??

FOS 怎么可能找到一个不存在的用户?还是我遗漏了模板中的某些内容?

据我了解,状态块应该显示错误,但它始终是成功的。

我没有覆盖任何默认控制器

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

{% trans_default_domain 'FOSUserBundle' %}

{% block status %}
  {{ 'resetting.check_email'|trans({'%tokenLifetime%': tokenLifetime})|nl2br }}
{% endblock %}

我觉得没有问题,而且是很好的行为。因为否则,一个人很容易吞噬大量的用户,这会造成安全问题。所以如果用户不存在,痛苦不在话下。 同样,如果您通过 link 仔细查看此 class(在 fosuserbundle 存储库中): ResettingController,更准确地说是方法 sendEmailAction,如果

,在第二个控制结构的级别
if (null !== $user && !$user->isPasswordRequestNonExpired($this->retryTtl))

可以注意到如果用户不存在则不发送邮件,if里面的指令不执行,直接跳转指令。

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

这就是为什么您总是看到成功的原因。即使在用户存在的情况下,也可以执行上述重定向。这就是我试图理解这个过程的方式。