当他/她忘记密码时,我想向用户发送电子邮件。此电子邮件应包含指向用户可以输入新密码的页面的链接。我给他们发什么链接?我的意思是我应该将用户名作为参数放在 url 中,如果是这样,我怎样才能隐藏参数而不显示在 url 中。我知道还有其他问题对此有答案,但我无法真正理解它们。我是编程新手。谢谢你的帮助。
问问题
153 次
3 回答
1
当用户请求新密码时,您会创建一个唯一的字符串,并将其保存在数据库中。然后,您通过电子邮件向用户发送包含该字符串的 url 和更改密码的路径。最后,您只需确保当用户访问该 URL 时这两个随机字符串相等。
但不要重新发明轮子。使用一些第三方应用程序。当然,您的框架至少有一个。
于 2013-08-12T20:33:11.710 回答
1
我使用随机生成的字符串来执行此操作,比如说 32 个字符长,它是在数据库中生成并保存在用户表中的,其中我有一个名为 NotAproved 的列。然后我向用户发送一封电子邮件,其中包含一个 32 个字符的字符串作为参数的链接。链接下的引擎获取字符串,在数据库中搜索相同的内容并重置密码,将 NotAproved 设置为 0。如果用户刚刚注册时已确认电子邮件,我将使用相同的字段作为权限指示符。
于 2013-08-12T20:40:20.003 回答
0
正如其他人已经建议的那样,最好生成一个与用户的任何信息无关的随机代码。然后可以将此代码与用户 ID 一起存储在数据库中的单独表中,但重要的一点是:仅存储此代码的哈希。
如果您将代码明文存储在数据库中,那么您的密码重置系统将比登录公式弱。通常破解密码重置功能确实比破解登录系统更容易。
使用知名框架的源代码是个好主意。如果您正在寻找一个可以提供此类重置链接的独立类,也许您想看看我的示例。
于 2013-08-12T21:17:07.993 回答