이동통신, 통신사, 기타 사업자의 온라인 비즈니스 홀을 이용할 때 비즈니스의 무결성과 정확성을 보장하기 위해 SMS 인증 코드를 사용해야 하는 경우가 많습니다. 최근에는 특정 지역의 비즈니스 요구로 인해 유사한 기능이 구축되었습니다.
원리는 매우 간단합니다. 즉, 사용자가 "인증 코드 받기"를 클릭하면 Ajax는 고정 숫자 문자열을 얻은 다음 데이터베이스를 작성하여 문자 메시지를 보내고 쿠키를 작성하여 유효 기간을 설정합니다. 인증 코드.
JS 요청 인증코드는 다음과 같습니다.
$.ajax({ type: "GET", url: "../Ajax/smsrandcodetest.ashx?phone=" + phone.val() + "&smsCodeRand=" + num, success: function(result) { if (result == "Y") { alert("验证码已发送至您输入的手机号!有效期5分钟"); RemainTime(); } else { alert("验证码获取失败!请重新获取"); } }, error: function() { alert("error"); } }); //获取6位随机验证码 function random() { var num = ""; for (i = 0; i < 6; i++) { num = num + Math.floor(Math.random() * 10); } return num; } //验证码有效期倒计时 function RemainTime() { var iSecond; var sSecond = "", sTime = ""; if (iTime >= 0) { iSecond = parseInt(iTime % 300); if (iSecond >= 0) { sSecond = iTime + "秒"; } sTime = "<span style='color:darkorange;font-size:13px;'>" + sSecond + "</span>"; if (iTime == 0) { clearTimeout(Account); sTime = "<span style='color:red;font-size:12px;'>验证码已过期</span>"; } else { Account = setTimeout("RemainTime()", 1000); } iTime = iTime - 1; } $("#endtime").html(sTime); }
프런트엔드에서 처리할 작업은 기본적으로 위와 같습니다. 이제 Js에서 생성한 인증코드가 규칙을 따르지 않는 것을 방지하기 위해 HttpHandler에 로직을 추가해야 합니다. 백엔드:
if (smscoderand.Length != 6) //如果JS生成的随机码不符,则用C#生成随机码 { smscoderand = GetRandom(); } //写短信数据,发SMS //写Cookie,设置验证码有效期,比如5分钟 //注:如果以上都处理成功,返回"Y",处理失败,返回"N"
여기서는 편의상 인증코드의 유효기간 확인을 쿠키를 이용하여 완료하고 있습니다. 비즈니스가 제출되면 클라이언트의 쿠키가 있는지 확인하기 위해 쿠키가 존재하지 않으면 만료된 것입니다. 나중에 사업이 확장되면 데이터베이스 유효성 확인 및 1시간 또는 하루에 전송되는 인증 코드 수를 제한하는 등의 기타 규칙을 추가하는 것을 고려할 수 있습니다(문자 메시지는 무제한으로 보낼 수 없음).
이상은 JavaScript SMS 인증 코드 구현 방법에 대한 자세한 소개입니다. 모든 분들께 도움이 되길 바랍니다.