我有一个网站向某人发送确认电子邮件。

现在,在电子邮件中,我想要一个用户必须点击的链接,以确认他收到了邮件。

我想将用户的密码(或一些随机代码)包含在确认地址中,因此用户无需再次手动输入密码,但如果我这样做,密码将在浏览器中结束历史记录和日志文件。

有没有其他方法可以在电子邮件中获取确认链接以发送用户名和密码等信息,而不会以某种方式在链接中结束?
例如,它是否可以在电子邮件中包含输入表单并将密码作为POST而不是GET发送?

有帮助吗?

解决方案

这通常的方式是确认电子邮件包含一个包含某种GUID(全球唯一标识符)的链接。 GUID与用户的帐户相关联。单击链接时,Web应用程序只需设置确认标志,并使用GUID而不是通常的用户名和密码组合来记录用户。

其他提示

根据用户的ID和当前时间计算十六进制摘要(例如md5)。将此代码保留到数据库或使用它作为文件名编写文件,并包含用户的ID和电子邮件地址。

设置一个http处理程序(cgi,php,servlet等...),以根据看起来像“/ confirm_email / {hexdigest}”的URI接收GET请求。或“/confirm_email.php?code = {hexdigest}”

当用户需要确认他们的电子邮件时,请发送包含摘要的上述servlet的链接。

当有人链接到此URI时,请使用匹配的摘要检索数据库记录或文件。如果找到,则现在验证包含的电子邮件地址。

如果您想让它更健壮:当用户验证他们的电子邮件时,请将十六进制摘要更改为电子邮件地址本身的哈希,不含盐。然后,您可以测试某人的电子邮件是否已更改并需要重新验证。

您可以在电子邮件中传递GUID。该特定GUID必须与用户相关联。然后,当用户单击链接时,GUID将被发送回应用程序,并可以作为QueryString捕获。将GUID提取为用户已获批准的更新。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top