2009-08-19 52 views
1

我正在編寫一個服務器端Java程序,它會通過一個確認URL(位於電子郵件正文中)向用戶發送電子郵件。如何使用JavaMail/Servlet機制創建ConfirmationURL?

已經使用JavaMail API創建了servlet(可以發送電子郵件)......我想知道我將如何設計/實現實際的唯一URL(在最終用戶點擊後,它會啓動瀏覽器並在網頁中聲明「已確認」)?確認的內容必須與最終用戶的電子郵件地址相匹配(用於驗證目的)。我是否需要生成一個與數據庫中創建的用戶匹配的令牌,或者我會使用附加到URL的HttpSession或Cookie?

將不勝感激,如果有人能在正確的方向點我...

快樂編程,

邁克

回答

2

如果你能負擔得起這個數據庫,最好的辦法應該像這個,

  1. 在您發送確認電子郵件之前,請創建一個會話ID作爲密鑰的記錄。您將電子郵件地址,到期日期和所有其他信息存儲在數據庫中。在確認鏈接中編碼會話ID。您還應該包含有關如何在電子郵件禁止熱鏈接時手動輸入確認碼的說明。短會話ID應該用於手動輸入。
  2. 當用戶點擊鏈接或手動輸入會話ID時,轉到數據庫檢索會話。如果電子郵件匹配,但沒有過期,則確認用戶。

在其他一些應用程序中,我們不希望爲此創建一個數據庫,因此我們創建一個電子郵件地址的HMAC(祕密散列)並將其用作確認密碼。在這種情況下,需要在鏈接中提供電子郵件。

HttpSession和Cookie不起作用,因爲當用戶稍後點擊確認鏈接時,它們可能會消失。