FOSUserBundle:重置密码页面查找不存在的用户

时间:2019-01-31 14:48:09

标签: symfony fosuserbundle

我在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 %}

1 个答案:

答案 0 :(得分:0)

我认为没有问题,而且这是一种良好的行为。因为否则,一个人很容易吞噬大量用户,这将导致安全问题。因此,如果用户不存在,就不用痛苦了。 同样,如果您通过链接仔细查看此类(在fosuserbundle存储库中): ResettingController,更准确地说是方法 sendEmailAction ,如果第二个控件结构为

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

您会注意到,如果用户不存在,则不会发送邮件,if内的指令不会执行,我们将直接转到重定向指令。

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

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