java實現(xiàn)手機短信驗證的基本思路
更新時間:2017年11月23日 16:45:05 作者:一大三千
這篇文章主要為大家詳細介紹了java實現(xiàn)手機短信驗證的基本思路,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了java實現(xiàn)手機短信驗證的具體代碼,供大家參考,具體內(nèi)容如下
整體流程:
- 客戶填入手機號,通過客戶端點擊獲取驗證碼按鈕,驗證手機號是否有效,有效則客戶端發(fā)送請求到后臺服務器,客戶端開始倒計時60s,不通過則返回;
- 服務器,驗證手機號是否被注冊或有效,通過則調(diào)用第三方的短信通信接口并發(fā)送相關數(shù)據(jù)(包括手機號和驗證碼),然后回調(diào)結(jié)果,成功則將驗證碼存入session,失敗則返回提示,不通過則返回。
- 客戶收到驗證碼后在有效時間內(nèi),填入并發(fā)送請求。
- 服務器端,收到請求后,用戶發(fā)送過來的驗證碼和事前放入session的驗證碼做對比,相同通過,否則提示驗證碼無效。
通過后,需要將session中的驗證碼無效化,一般就是置為空。
第一步偽代碼:
function sendCaptcha(tel) {
console.log("sendCaptcha: tel = " + tel);
$.ajax({
type: 'post',
url: '/sms/captcha/' + tel,
dataType: "json",
success: function (data) {
console.log("sendCaptcha ==> success: data = " + eval(data));
if (data) {
countdown();
b_code = false;
} else {
alert("您發(fā)送的頻率過快!");
}
},
error: function (data) {
console.log("sendCaptcha ==> error: data = " + eval(data));
alert("網(wǎng)絡超時");
clearTimeout(t);
b_code = true;
var msg = "獲取驗證碼";
$("#code").text(msg);
c = 60;
}
});
}
第二步偽代碼:
@RequestMapping(value = "captcha/{recPhoneNum}", method = RequestMethod.POST)
public Object getSmsCaptcha(ModelMap model, @PathVariable("recPhoneNum")String recPhoneNum) {
String responseBody = null;
/* 這里驗證手機號是否被注冊 */
// 生成驗證碼
String captcha = Generator.generateCaptcha();
// 第三方短信通信接口參數(shù)設置
req.setReceive(recPhoneNum);
try {
// 發(fā)送請求
responseBody = req.send();
// 將驗證碼放入session
model.addAttribute("captcha", captcha);
// 得到結(jié)果
responseBody = rsp.getBody();
log.debug("getSmsCaptcha: responseBody = " + responseBody);
if (rsp.getResult() != null) {
model.addAttribute("success_response", rsp.getResult());
} else {
model.addAttribute("error_response", rsp.getSubMsg());
}
} catch (ApiException e) {
log.error("getSmsCaptcha :" + e.getErrMsg());
}
// 解析結(jié)果
if (successJson != null) {
successJson = successJson.getJSONObject("result");
return successJson.getBoolean("success");
} else {
return false;
}
}
最后一步偽代碼:
// 從session取出驗證碼
String captcha = session.getAttribute("captcha");
// 比較
if (reqCaptcha.equals(captcha))
// 相同通過,則無效化驗證碼
session.setAttribute("captcha", null);
else
// 不通過并提示無效驗證碼
如有疑問,請指出!
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
SpringBoot部署到Linux讀取resources下的文件及遇到的坑
本文主要給大家介紹SpringBoot部署到Linux讀取resources下的文件,在平時業(yè)務開發(fā)過程中,很多朋友在獲取到文件內(nèi)容亂碼或者文件讀取不到的問題,今天給大家分享小編遇到的坑及處理方案,感興趣的朋友跟隨小編一起看看吧2021-06-06
Java集合中獲取數(shù)據(jù)前驅(qū)和后繼元素的實現(xiàn)
使用一致性hash時,如何找到一個hash值對應的臨近節(jié)點,可以使用集合中獲取數(shù)據(jù)的前驅(qū)和后繼元素實現(xiàn),所以本文給大家介紹了Java集合中獲取數(shù)據(jù)前驅(qū)和后繼元素的實現(xiàn),文中有相關的代碼示例供大家參考,需要的朋友可以參考下2024-05-05
解析Java的Spring框架的BeanPostProcessor發(fā)布處理器
這篇文章主要介紹了Java的Spring框架的BeanPostProcessor發(fā)布處理器,Spring是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下2015-12-12
java web將數(shù)據(jù)導出為pdf格式文件代碼片段
這篇文章主要為大家詳細介紹了java web將數(shù)據(jù)導出為pdf格式文件代碼片段,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01

