2008-10-17 120 views
1

我有一个网站向某人发送确认电子邮件。确认提交电子邮件链接的最佳方式ID

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

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

是否有任何其他的方式来获得电子邮件中的确认链接发送信息,如用户名和密码,如果没有它在某种程度上链接结束了?
它是否可以在电子邮件中包含输入表单并将密码作为POST发送而不是GET?

回答

6

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

+0

它通常值得确保GUID是“一次很好的交易”,并且一旦任务完成,它将阻止该GUID再次运行。 – 2008-10-17 16:16:47

2

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

5

计算六角摘要(例如MD5)基于所述用户的ID和当前时间。将此代码保存到数据库或使用它作为文件名编写文件,并包含用户的ID和电子邮件地址。

设置一个http处理程序(cgi,php,servlet等等)来接收基于类似“/ confirm_email/{hexdigest}”或“/confirm_email.php?code=”的URI的GET请求{} hexdigest”

当用户需要确认他们的电子邮件,发送一个链接到包含消化上述的servlet。

当有人链接到这个URI,检索分贝记录或与匹配的摘要文件。如果找到一个,则包含的电子邮件地址现在已被验证。

如果你想让它更健壮:当用户验证他们的电子邮件,更改十六进制摘要只是电子邮件地址本身的散列,没有盐。然后,您可以测试某人的电子邮件是否已更改,并需要重新验证。