2013-10-17 101 views
0

用戶完成註冊過程後,我們需要發送驗證郵件給用戶。 我知道如何發送電子郵件,但我需要知道發送驗證鏈接的過程是什麼,應該在表中創建一列以保存驗證令牌並將其發送加密。如果我們必須保存驗證令牌,那麼生成此令牌的最佳方式是什麼。我不嘗試任何解決方案。Asp.net驗證郵件

+0

「我不會嘗試任何解決方案」,如果您嘗試了一些冷杉,那麼我們更喜歡它,如果您遇到困難,請回過頭來提問。 –

+0

先試一下,然後來這裏告訴我們 –

回答

0

是的,您應該在表格中創建一個列來保存驗證令牌。

你可以激活代碼爲「GUID」

做同樣的一個簡單方法是:

  1. 結合用戶ID,驗證令牌和創建日期構建查詢字符串。將合併的字符串

    「?用戶=」 + Convert.ToBase64String(Encoding.Unicode.GetBytes(字符串的

  2. 待辦事項編碼。格式(「user = {0} & code = {1} & cd = {2}」,User-ID,verification,Creation-date)));

  3. 將鏈接發送給用戶

  4. 當用戶點擊這個鏈接時,通過使用「&」

    編碼吐涎它解碼查詢字符串

  5. 獨立的組合值。 Unicode.GetString(Convert.FromBase64String(ActivationDetails))。Split(new Char [] {'&'});

您擁有激活該帳戶所需的所有值。此外,您可以添加您的邏輯和加密方法。但是,基地保持不變。

希望這會有所幫助。

0

我建議有一個名爲「ActivationToken」的字段,並生成一個GUID。您可以通過調用newid()函數直接在SQL中執行此操作,也可以通過調用Guid.NewGuid()在C#中執行此操作。這是一個非常獨特的/隨機的價值​​,幾乎不可能暴力破解。

因此,當用戶註冊,你會做這樣的事情:

insert into tblUsers (Username, Password, Active, ActivationToken) values ('johndoe', 'mypassword', 0, newid()) 

鏈接會是這樣:http://yoururl.com/Activate.aspx?token= {yourActivationGuid}

Update tblUsers set Active=1 where ActivationToken={yourActivationGuid} 

如果你的用戶名已經是一個GUID,你可以可能會使用它(例如,如果您使用的是aspnet_user表)。至於不允許登錄,只需檢查Active標誌是否設置爲true。如果不是,請禁止登錄。

所以驗證登錄,你可以這樣做:

select * from tblUsers where Username="johndoe" and Password="mypassword" and Active=1 
2

我會建議生成一個GUID,當用戶註冊成功,這樣的:

Guid theVerificationCode; 
theVerificationCode = Guid.NewGuid(); 

現在存儲在數據庫中列此GUID值,大概在類似User的表格中。

現在,當您發送電子郵件,您可以提供此驗證碼值通過查詢字符串URL的一部分,就像這樣:

string theVerificationCode = GetVerificationCodeFromDatabase(); 
string theEmailLink = "https://www.yoursite.com/YourApp/Verify.aspx?code=" + theVerificationCode; 

最後,你將需要建立邏輯到Verify.aspx頁面將匹配在查詢字符串中傳遞的內容與數據庫中的內容匹配,如果它們匹配,則可以允許用戶進行身份驗證,否則將顯示錯誤消息。