2009-08-19 82 views
1

我正在编写一个服务器端Java程序,它会通过一个确认URL(位于电子邮件正文中)向用户发送电子邮件。如何使用JavaMail/Servlet机制创建ConfirmationURL?

已经使用JavaMail API创建了servlet(可以发送电子邮件)......我想知道我将如何设计/实现实际的唯一URL(在最终用户点击后,它会启动浏览器并在网页中声明“已确认”)?确认的内容必须与最终用户的电子邮件地址相匹配(用于验证目的)。我是否需要生成一个与数据库中创建的用户匹配的令牌,或者我会使用附加到URL的HttpSession或Cookie?

将不胜感激,如果有人能在正确的方向点我...

快乐编程,

迈克

回答

2

如果你能负担得起这个数据库,最好的办法应该像这个,

  1. 在您发送确认电子邮件之前,请创建一个会话ID作为密钥的记录。您将电子邮件地址,到期日期和所有其他信息存储在数据库中。在确认链接中编码会话ID。您还应该包含有关如何在电子邮件禁止热链接时手动输入确认码的说明。短会话ID应该用于手动输入。
  2. 当用户点击链接或手动输入会话ID时,转到数据库检索会话。如果电子邮件匹配,但没有过期,则确认用户。

在其他一些应用程序中,我们不希望为此创建一个数据库,因此我们创建一个电子邮件地址的HMAC(秘密散列)并将其用作确认密码。在这种情况下,需要在链接中提供电子邮件。

HttpSession和Cookie不起作用,因为当用户稍后点击确认链接时,它们可能会消失。