短信验证码接口使用

注册时经常会用到短信验证码。通过第三方平台接口实现短信发送。
直接上代码

 1         @ResponseBody
 2         @RequestMapping(value="/dycode.htm")
 3         public Object getDynamicCode(@PathVariable String mobile){
 4             Jedis jedis = null;
 5             try{
 6                 jedis = jedisPool.getResource();
 7                 if(jedis.ttl(mobile) > 240){
 8                     return getResponse(2, "获取动态验证码太频繁!");
 9                 }
10                 String verifyCode = Utilities.getVerifyCode(6);
11                 Runnable runnable = new Runnable() {
12                     public void run() {  
13                         String smsServerUrl = "http://smssh1.253.com/msg/send/json";
14                         String msg = "【某某平台】 "+ verifyCode +" (某某平台验证码,请完成验证),如非本人操作,请忽略本短信。";
15                         SmsSendRequest smsSingleRequest = new SmsSendRequest("N......2", "he.......c", msg, mobile, "true");
16                         String requestJson = JSON.toJSONString(smsSingleRequest);
17                         String response = ChuangLanSmsUtil.sendSmsByPost(smsServerUrl, requestJson);
18                         JSONObject jsonResObj = JSON.parseObject(response);
19                         if(jsonResObj.getInteger("code") != 0){
20                             logger.warn("获取动态验证码失败:" + response);
21                         }
22                     }
23                 };
24                 new Thread(runnable).start();
25                 jedis.setex(mobile, 300, verifyCode);
26                 return getResponse(0, "请求发送动态验证码成功!");
27             }catch (Exception e) {
28                 e.printStackTrace();
29                 logger.error("请求发送动态验证码时:" + e.toString());
30                 return getResponse(-1);
31             }finally {
32                 if(jedis != null){
33                     jedis.close();
34                 }
35             }
36         }
短信验证码

1.点击发送验证码功能时,倒计时60秒才能再次点击(前端js控制)
此时通过 Utilities.getVerifyCode(6) 方法生成6位数验证码,通过第三方发送到指定手机号码
2.将验证码存入redis,并设置失效时间
 jedis.setex(mobile, 300, verifyCode); 
这里设置为300s失效。
登录时取对应存储的手机号的验证码,进行忽略大小写验证。验证成功则删除redis存入的此验证码。
注:在验证码未失效时,查询此手机号对应验证码的失效时间,提示获取验证码过于频繁。

posted @ 2019-05-20 14:29  atimo  阅读(2687)  评论(0编辑  收藏  举报