我在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 %}
答案 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)));
这就是为什么您总是看到成功的原因。同样,即使在用户存在的情况下,也可以执行上述重定向。这就是我试图了解这一过程的方式。