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 %}
解决方案
我认为没有问题,此外这是一种良好的行为。因为否则,一个人很容易吞噬大量用户,这将导致安全问题。所以如果用户不存在,就不痛提了。同样,如果您通过以下链接仔细查看此类(在 fosuserbundle 存储库中): ResettingController,更准确地说是方法sendEmailAction,在第二个控制结构的级别,如果
if (null !== $user && !$user->isPasswordRequestNonExpired($this->retryTtl))
您会注意到,如果用户不存在,则不会发送邮件,if 中的指令不会执行,我们直接转到重定向指令。
return new RedirectResponse($this->generateUrl('fos_user_resetting_check_email', array('username' => $username)));
这就是为什么你总是看到成功。即使在用户存在的情况下,也可以执行上述重定向。这就是我试图尝试理解这个过程的方式。
推荐阅读
- python-3.x - 有人可以解释为什么 Python 解释器在这种使用装饰器的情况下不会感到困惑吗?
- python-3.x - 正则表达式:提取由“-”(减号)字符分隔的字母数字序列
- html - 这个以 HTML/CSS 设计的捐赠进度条在进度条达到 90% 以上时会中断。随着栏的增加,我如何让文本保持原位或缩小?
- c# - 输入登录凭据后尝试启用某些按钮,但我的代码不起作用
- python-3.x - Groupby 确定每个组的最短日期
- azure - Azure 语音服务 CLI,使用 SSML 错误代码:1007
- node.js - 如何启用默认禁用的--rs
- excel - 获取 fmMultiSelectSingle ListBox 中聚焦但未选择的行的索引值
- java - JpaSystemException:无法提取结果集
- python - 当另一个 td 包含某些文本时,Selenium Python 选择第 n 个 td