【问题标题】:How can I let the browser know the username when user updates his password?用户更新密码时如何让浏览器知道用户名?
【发布时间】:2019-01-13 20:27:23
【问题描述】:

我有一个会员登录系统(symfony/php 网站)。当会员登录时,浏览器会询问用户(就像现在大多数浏览器所做的那样),是否应该记住用户名和密码。到目前为止一切顺利。

当用户需要通过“忘记密码”链接设置新密码时,他将通过他的电子邮件地址收到一个链接。单击链接后,他会得到一个包含两个输入(newPasswordnewPassword2)的表单,他可以在其中决定新密码。

由于此表单上没有username-input,浏览器无法知道他应该将该密码保存到哪个用户名。

如何让浏览器知道正确的用户名是什么?我有所有可用的数据,但我不知道如何以正确的方式将其呈现给浏览器。用户不应看到其他字段。

我试过了

<input type="hidden" name="username" value="some@username.com"/>

但至少谷歌浏览器似乎没有为其密码管理器读取该值。

【问题讨论】:

标签: symfony login passwords


【解决方案1】:

无需将用户名发送到浏览器(这很危险,我会进一步解释)。单击“忘记密码”链接时,生成一个唯一密钥并将其存储在数据库中用户表的特殊字段中(我将其称为“验证码”)。此验证码将插入发送给用户的链接中。当用户在其电子邮件中单击此链接时,此代码将插入到“新密码”表单的隐藏字段中。提交后会使用这个key来判断用户。

我建议您不要直接插入用户名,因为恶意用户可以修改 HTML 代码来设置任何用户帐户的密码。

【讨论】:

  • 感谢您的评论。我知道这一点并实施了您已经描述的验证代码。我没有提到它,因为我认为这很明显;-)
猜你喜欢
  • 2011-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-24
相关资源
最近更新 更多