jsp網(wǎng)頁開發(fā)中,通過注冊郵箱找回密碼,并限制連接的有效時間
jsp網(wǎng)頁開發(fā)中,通過注冊郵箱找回密碼,并限制連接的有效時間???
在很多注冊系統(tǒng)中,都會有忘記密碼通過郵箱找回密碼這一功能,但這是怎么實現(xiàn)的呢。通過自己做的一個小項目來說說我是怎么做的吧。首先用戶在注冊時必須要填寫有效的電子郵箱地址。注冊成功時,當(dāng)用戶登錄忘記密碼是,可以這樣來實現(xiàn)。首先要定義一個數(shù)據(jù)庫表:就叫test吧。里面有如下幾個字段:username(注冊的用戶名),url(當(dāng)選擇忘記密碼時,會有一個隨機(jī)但不重復(fù)的的值作為url),forgetdate(申請找回密碼的時間)。用戶申請找回密碼,必須要輸入有效的用戶名和注冊時對應(yīng)的eamil地址。只有在這兩項都通過驗證確實在數(shù)據(jù)庫中存在時,產(chǎn)生一個隨機(jī)的url參數(shù) (用系統(tǒng)當(dāng)前時間的毫秒數(shù):System.currenttime()+username ,再通過md5加密(或者其他加密算法)生成一串字符串。)例如:發(fā)往郵箱的找回密碼鏈接地址是:http://127.0.0.1/bbs/finfpwd.jsp?url=(生成的字符串)。如何發(fā)送郵件在網(wǎng)上搜一下,很多。 在往test數(shù)據(jù)表中保存數(shù)據(jù)時,要記錄一個session,用于保存提交找回密碼的時間。session.put("startdate",Systsm.currenttime()); 這時用戶登錄郵箱,點(diǎn)擊收到的連接,由于保存了session的時間信息。在finfpwd.jsp中有一個判斷語句。就是用戶點(diǎn)擊該鏈接的時間,將點(diǎn)擊該鏈接的時間與保存的session時間差與你設(shè)定的時間閥值做比較,如果小于,則跳到修改密碼的頁面,否則提示用戶該鏈接已過期。當(dāng)然在改密碼的頁面如何知道是那個用戶呢,很簡單,在findpwd.jsp頁面中寫一個接收url參數(shù)的代碼。只要將生成的url字符串作為隱式的參數(shù)傳給后臺。這樣就可以修改密碼了。