短信驗證登陸
1、點擊觸發,以電話號碼為參數調用發送驗證登錄短信方法
2、默認模板為驗證模板
生成6位驗證碼
3、將生成的驗證碼和手機號碼放入緩存,(已經設置好緩存存放時間)
4、調用發送模板短信方法發送短信(設置好短信中驗證碼有效的時間)
5、點擊觸發登陸,調用對應驗證登錄函數 ,以電話號碼和驗證碼為參數
6、校驗緩存中對應保留的信息
如果一致,登陸成功;
登陸不成功是返回原因(1、超時 2、驗證碼輸入錯誤)
代碼實現:
/**
*發送驗證碼短信
*參數:手機號碼
*/
public void sendVerifyLoginSMS(String to) {
Jedis cache = sendSMSCache.getResource();
//生成六位驗證碼
String charValue = "";
for (int i = 0; i < 6; i++) {
char c = (char) (randomInt(0, 9) + '0');
charValue += String.valueOf(c);
}
//將生成的六位驗證碼和傳進來的手機號碼存入緩存,時間90S
try{
Pipeline pipeline = cache.pipelined();
pipeline.set("CACHE" + to, charValue);
pipeline.expire("CACHE", 90);
pipeline.sync();
}
finally
{
if (cache != null)
{
cache.close();
}
}
//驗證碼和顯示時間
String[] datas = {charValue,"1.5"};
//短信模板
String templateId = "1";
sMSClientBiz.sendSMS(to, templateId, datas);
}
/**
* 生成隨機數
*
* */
public int randomInt(int from, int to) {
Random r = new Random();
return from + r.nextInt(to - from);
}
/**
* 驗證短信驗證碼登陸
*
* */
public boolean verifySMS(String to, String verifyCode) {
Jedis cache = sendSMSCache.getResource();
// 緩存中驗證碼
String cacheVerifyCode;
try{
cacheVerifyCode = cache.get("CACHE" + to);
}
finally
{
if (cache != null)
{
cache.close();
}
}
//如果贖金來的驗證碼和緩存中的驗證碼一致,則驗證成功
if(verifyCode ==cacheVerifyCode ){
return true;
}else
return false;
}