2012-06-14 41 views
0

我正在開發一個使用struts2和hibernate作爲後端的網站。在註冊後的很多網站中,鏈接會發送到您的電子郵件,點擊後註冊完成。我想在我的webstie上使用此功能,但我不知道如何執行此操作,以及它如何工作?我需要一些例子來做到這一點....如何在註冊期間驗證電子郵件?

+0

這對SO來說太寬泛了。基本上,你有一個表單提交給你的服務器端代碼,爲註冊生成一個唯一的標記,在你的數據庫(包括令牌)中創建一個帶有「掛起」標誌或類似標記的記錄,然後發送一封電子郵件Java郵件API)包含令牌到電子郵件地址。您將顯示他們可以提供令牌的頁面。他們會遵循鏈接或將令牌複製並粘貼到頁面中,並將其與他們的登錄信息一起發送。他們提供的令牌和他們的登錄信息的事實告訴你他們得到的電子郵件,這是他們。 –

+0

這與struts2 –

回答

2

我從來沒有搞砸過struts,但基本上你可以做的就是發送一個鏈接,指向一個特定的頁面的電子郵件。當用戶註冊您的網站時,您可以保存用戶的電子郵件地址,註冊的時間戳以及密鑰(例如,可能是電子郵件和密碼的散列)。

然後構建鏈接並在查詢字符串中包含電子郵件和密鑰。一旦用戶點擊鏈接,在你的頁面上,你會檢查用戶是否仍然在一定的時間範圍內(可選),並且給出的電子郵件與給定的鍵(你已經存儲在數據庫中)相匹配。

如果電子郵件和密鑰匹配,則激活該帳戶。

+0

無關我建議使用隨機密鑰。至少在哈希中使用祕密成分( - >鹽),否則知道如何計算密鑰的攻擊者也可以計算密鑰,並且不需要能夠接收電子郵件。除此之外,這是通常的電子郵件檢查方式。 – user1252434

+0

@ user1252434:我同意你的解決方案。我只是想提供一些基本的,微不足道的例子,可以讓OP以正確的方向開始。 – npinti

+0

感謝npinti您的建議。我剛剛完成發送URL到郵件。但我不知道如何加密和解密URL。你能幫我嗎 –

1

這是很寬泛的問題,但我以回答有關覈查

1.你需要用形式例如註冊頁面/signup.jsp
2.基本領域和電子郵件驗證後,生成代碼xyzcode此電子郵件,
3.發送電子郵件到用戶的電子郵件,利用郵件服務器鏈接到你的鏈接頁面驗證像 /validate.jsp?code=xyzcode(郵件服務器設置和發送電子郵件超出範圍的答案)
4.在validat e.jsp檢查代碼並使用此代碼驗證任何電子郵件,否則會給出相應的錯誤消息。

+0

感謝這個我在我的項目中做的很好, –

+0

如果你喜歡它,你可以接受/投票。 – mtariq

+0

和更好地生成一個隨機令牌,所以你不需要加密令牌。 – mtariq

0

有很多種方法,但我建議一個這將是很容易和按標準..

In user tableadd extra column as Status [這可以取兩個值要麼不活動或活動現在

create one more table(emailauthentication) where columns will be (key,emaiId).. 

什麼ü必須做的是在用戶點擊提交註冊數據...發出動態密鑰..可以是時間戳+ emailId(或任何動態和唯一的),並創建記錄在用戶表狀態爲非活動,並創建記錄在emailauthentication表中與此生成的密鑰和emaiId ..現在創建記錄後生成一個URL也能像

<a href="doAuthenticationForUser?authenticationId='dynamicKey'"/>Click to authenticate</a> 

現在,當用戶點擊這個網址然後在操作類或服務這個authenticationId找到EMAILID,使列狀態爲活動..

+0

感謝我做了這種善意的重播。 –

0

這是真的,那是相當大的,以回答問題。
我知道一個鏈接,它有最好的答案給出BalusC
這裏是鏈接:better answer
我已經在我的項目中實現了。我希望這個鏈接能夠幫助其他人。
感謝您的閱讀。

相關問題