向郵箱傳送驗證碼去驗證郵箱或者密碼等等

2021-08-13 02:28:53 字數 3857 閱讀 2184

1.首先向郵箱傳送乙個驗證碼,其實向其他郵箱傳送乙份郵件比較簡單,主要是要驗證這個驗證碼

假設郵箱能收到驗證

//重新傳送啟用郵件

member member = userconext.getcurrentmember();

if(member == null)

member = membermanager.get(member.getmember_id());

if(member == null)

if(member.getlast_send_email() != null && system.currenttimemillis() / 1000 - member.getlast_send_email().intvalue() < 5 * 60)

mapsendresult = emailutil.sendmobilesms(key);

int statecode = integer.parseint(sendresult.get("smscontent").tostring());

eopsite site = eopsite.getinstance();

emailmodel emailmodel = new emailmodel();

emailmodel.getdata().put("username", member.getuname());

emailmodel.getdata().put("sitename", site.getsitename());

emailmodel.getdata().put("logo", site.getlogofile());

emailmodel.getdata().put("statecode", statecode);

emailmodel.settitle(member.getuname()+"您好,"+site.getsitename()+"會員繫結郵箱!");

emailmodel.setemail(email);

emailmodel.settemplate("reg_email_template.html");//使用者看到的模板

emailmodel.setemail_type("繫結郵箱");

mailmessageproducer.send(emailmodel);

member.setlast_send_email(dateutil.getdateline());

membermanager.edit(member);

return jsonresultutil.getsuccessjson("郵件傳送成功,請登入您的郵箱 " + member.getemail() + " 進行查收!");

2.現在主要驗證碼怎麼驗證:

mapsendresult = emailutil.sendmobilesms(key);

int statecode = integer.parseint(sendresult.get("smscontent").tostring());

statecode  是乙個6位數的驗證碼 從emailutil類取到傳送郵箱中

3.看看這個類emailutil怎麼生成驗證碼的以及怎麼驗證的

/**

* 郵箱驗證碼

* @author

* **/public class emailutil catch(runtimeexception e)

return result;

} public static boolean validsmscode(string validcode, string key)

// 如果驗證碼為空

if (validcode == null || "".equals(validcode))

string code = (string) threadcontextholder.getsession().getattribute(sms_code_prefix + key);

// 驗證碼為空

if (code == null) else

}//驗證通過後 去除session資訊

threadcontextholder.getsession().removeattribute(sms_code_prefix + key);

return true;

} }

(1.)這個類中有兩個方法,乙個sendmobilesms 是獲取乙個6位數的隨機數

注意:這個驗證碼存在session中

//驗證碼session字首

private static final string sms_code_prefix = "";

httpsession session = threadcontextholder.getsession();// session中的格式是  字首+key

string codesessionkey = sms_code_prefix + key;

session.setattribute(codesessionkey, dynamiccode);

4.使用者在拿到 6位數的驗證碼後提交驗證

//驗證手機校驗碼的key值不能為空

member member = userconext.getcurrentmember();

if(stringutil.isempty(key))

boolean result = emailutil.validsmscode(validcode, key);

//如果手機校驗碼錯誤

if (!result) else

5.驗證使用者輸入的驗證碼和發到郵箱的驗證碼是否一致

繼續呼叫 類 emailutil

boolean result = emailutil.validsmscode(validcode, key);

兩個引數乙個key,乙個驗證碼validcode

public static boolean validsmscode(string validcode, string key) 

// 如果驗證碼為空

if (validcode == null || "".equals(validcode))

string code = (string) threadcontextholder.getsession().getattribute(sms_code_prefix + key);

// 驗證碼為空

if (code == null) else

}//驗證通過後 去除session資訊

threadcontextholder.getsession().removeattribute(sms_code_prefix + key);

return true;

}

注意

:此時就拿發出的驗證和使用者輸入的驗證匹配相等return true 

從session取值 

string code = (string) threadcontextholder.getsession().getattribute(sms_code_prefix + key);

// 驗證碼為空

if (code == null) else

}//驗證通過後  去除session資訊

threadcontextholder.getsession().removeattribute(sms_code_prefix + key);

return true;

ps.這裡會有問題 超時沒做判斷 比如60秒驗證時間、驗證有沒有傳送成功為了安全或者其他的等等。如果專案安全性很高,需要再補充其他的東西。

傳送郵箱驗證碼進行註冊驗證

一 流程圖 操作思路 進行郵箱驗證碼驗證 比較與輸入的驗證碼 是否一致 一致的話則可以註冊 二 示例 1 生成隨機驗證碼 def get random str 驗證碼是由 字母a z a z 數字 0 9 組成 在 ascii 碼中 小寫a的起點是97 大寫a起點是65 num str var fo...

手機傳送驗證碼

傳送簡訊以後,再次傳送簡訊按鈕變得不可用,倒計時60秒以後才可以使用 建立按鈕倒計時的方法 function countdown count 在傳送簡訊請求以後呼叫 傳送簡訊按鈕不可用 每過1秒呼叫1次匿名函式 匿名函式中計數減1 按鈕上的文字變為 x秒後可再次傳送驗證碼 如果計數變為0 按鈕變得可...

django郵件傳送驗證碼

在我們使用 註冊賬號時,使用郵箱傳送驗證碼是很普遍的事。那麼下面就介紹使用django專案傳送郵箱驗證碼來進行驗證註冊。現在說一下在settings.py中的配置。email backend django.core.mail.backends.smtp.emailbackend email host...