我有一个网站向某人发送确认电子邮件。
现在在电子邮件中,我想要一个链接,用户必须单击以确认他收到了邮件。
我想在确认地址中包含用户的密码(或一些随机代码),因此用户不需要再次手动输入,但如果我这样做,密码将最终出现在浏览器历史记录中,并且日志文件。
有没有其他方法可以在电子邮件中获取确认链接以发送用户名和密码等信息,而不会以某种方式在链接中结束?
例如,是否可以在电子邮件中输入表单并将密码作为 POST 而不是 GET 发送?
我有一个网站向某人发送确认电子邮件。
现在在电子邮件中,我想要一个链接,用户必须单击以确认他收到了邮件。
我想在确认地址中包含用户的密码(或一些随机代码),因此用户不需要再次手动输入,但如果我这样做,密码将最终出现在浏览器历史记录中,并且日志文件。
有没有其他方法可以在电子邮件中获取确认链接以发送用户名和密码等信息,而不会以某种方式在链接中结束?
例如,是否可以在电子邮件中输入表单并将密码作为 POST 而不是 GET 发送?
这通常的工作方式是确认电子邮件包含一个包含某种 GUID(全局唯一标识符)的链接。GUID 与用户的帐户相关联。单击链接时,Web 应用程序只需设置确认标志并使用 GUID 登录用户,而不是使用通常的用户名和密码组合。
根据用户的 id 和当前时间计算一个十六进制摘要(例如 md5)。将此代码保存到数据库或以它作为文件名写入文件,并包含用户的 ID 和电子邮件地址。
设置一个 http 处理程序(cgi、php、servlet 等)以接收基于类似于“/confirm_email/{hexdigest}”或“/confirm_email.php?code={hexdigest}”的 URI 的 GET 请求
当用户需要确认他们的电子邮件时,发送一个指向上述 servlet 的链接,其中包含摘要。
当有人链接到此 URI 时,检索具有匹配摘要的数据库记录或文件。如果找到一个,则现在验证包含的电子邮件地址。
如果你想让它更健壮:当用户验证他们的电子邮件时,将十六进制摘要更改为电子邮件地址本身的哈希值,不加盐。然后您可以测试某人的电子邮件是否已更改并需要重新验证。
您可以在电子邮件中传递 GUID。该特定 GUID 必须与用户相关联。然后,当用户单击链接时,GUID 会被发送回应用程序,并且可以作为 QueryString 捕获。提取 GUID 用户已获批准的更新。