2008-10-17 92 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,檢索分貝記錄或與匹配的摘要文件。如果找到一個,則包含的電子郵件地址現在已被驗證。

如果你想讓它更健壯:當用戶驗證他們的電子郵件,更改十六進制摘要只是電子郵件地址本身的散列,沒有鹽。然後,您可以測試某人的電子郵件是否已更改,並需要重新驗證。