經過一系列的練習,實現了會員注冊《MVC會員注冊》http://www.cnblogs.com/insus/p/3439599.html,
登錄《MVC應用程序實現會員登錄功能》http://www.cnblogs.com/insus/p/3466512.html,
以及注銷《MVC會員注銷功能Cookie的應用》http://www.cnblogs.com/insus/p/3471147.html等功能。
還差一些什么呢?會員忘記密碼時,能夠請求密碼或是重置自己的密碼。現在Insus.NET就實現這個功能。本次演示中,Insus.NET的實現思路是會員填寫注冊的信息,如帳號和郵箱等,然后給郵箱發送一個超鏈接,用戶打開鏈接,出現重置密碼的網頁。此時會員就可以在24小時有效的情況之下重置密碼。
開始吧,在數據庫創建一張表[dbo].[ChangeRequestPassword],用戶請求密碼時,存儲會員每一次請求臨時的token信息:
token字段,是唯一字段,將用來發送給會員。Account和Email是用來記錄會員請求的帳號與郵箱。而最后一個字段Expire是一個記錄過期的字段。到時程序會根據此字段的時間來鏈接判斷是否失效。
接下來,創建一張郵件參數表[dbo].[EmailParameter]:
一個專業的站點,也許不止使用一個郵箱來發送服務郵件,電子報,會員服務等,應該把主發送的郵件列於此。
最后再創建一張表,是用來存儲所有訂閱等待的將要發送郵箱地址。
接下來,創建一個存儲過程,添加郵件參數:
下面Insus.NET以新浪郵箱為例,登錄之后,可以在選項中看到如下信息:
添加一個發送的郵箱參數,Insus.NET使用新浪的郵箱:
在此Insus.NET建議網友不要嘗試使用上面的帳號與密碼登錄上面所列的郵箱,密碼肯定不是所顯示的啦。
數據庫的設計還沒有完成,還有幾個存儲過程要寫:
上面的會員請求密碼存儲過程,首先判斷會員在請求密碼時所輸入的帳號與郵箱是否正確。
接着產生一個全新的token碼。當然這個token碼,你也可以按照你的處理方式來產生,唯一性即可。
#36行代碼,是選擇在郵件參數中,使用哪一個參考,即是說使用哪一個郵箱來發送。
#38與#39行代碼的網址,是一個真實正確的網址,肯定的你需要更改你MVC應用程序中的網址。
最后是把信息插入至訂閱郵件列表的表中。等待程序來處理。
現在可以轉到MVC應用程序,打開Entities目錄下的MemberEntity.cs,添加一個方法:
去控制器打開MemberController.cs添加兩個Result:
創建RequestPassword視圖,參考下圖的目錄與路徑:
到這里,這部分算完成了,會員可以直接訪問此頁或是我們可以在登錄介面中,放一個鏈接,可以導向此頁:
最后來看看實時操作演示:
在演示中已經達到我們最初的想法,但是郵件還是沒有發送出去,只是存在MailingList列表中。下一篇Insus.NET將會實現MVC應用程序自動執行也發送郵件。


