key设计 短信验证存redis_使用阿里大于发送短信验证码并存储到redis中

maven项目使用阿里大于发送短信验证码并存储到redis中

1.下载阿里大鱼SDK

在官网就可以下载,下载完以后,解压后我们看见:

2.我们接下来需要做的,就是将本地的这两个文件,加入本地仓库

3.Pom文件添加配置依赖:

com.taobao

dayu

1.0.0

4.因maven库中没有该插件,所以需要手动下载插件,然后包装成maven依赖,执行命令:

mvn install:install-file -DgroupId=com.taobao -DartifactId=dayu -Dversion=1.0.0 -Dpackaging=jar -Dfile=D:\.m2\repository\com\taobao\dayu\1.0.0\taobao-sdk-java-auto_1455552377940-20160607.jar

或:

mvn install:install-file -Dfile=d:\****.jar -DgroupId=com.taobao -DartifactId=dayu -Dversion=1.0.0 -Dpackaging=jar

5.发送短信代码:

importcom.taobao.api.ApiException;

importcom.taobao.api.DefaultTaobaoClient;

importcom.taobao.api.TaobaoClient;

importcom.taobao.api.request.AlibabaAliqinFcSmsNumSendRequest;

importcom.taobao.api.response.AlibabaAliqinFcSmsNumSendResponse;

importcom.liyang.common.http.OperationCode;

importcom.liyang.common.http.ResponseEntityBody;

importcom.liyang.util.MathUtil;

importcom.liyang.util.RegexUtil;

importcom.liyang.view.common.SmsCodeView;

importorg.slf4j.Logger;

importorg.slf4j.LoggerFactory;

importorg.springframework.beans.factory.annotation.Autowired;

importorg.springframework.beans.factory.annotation.Value;

importorg.springframework.data.redis.core.RedisTemplate;

importorg.springframework.stereotype.Controller;

importorg.springframework.web.bind.annotation.RequestBody;

importorg.springframework.web.bind.annotation.RequestMapping;

importorg.springframework.web.bind.annotation.RequestMethod;

importorg.springframework.web.bind.annotation.ResponseBody;

importjava.util.concurrent.TimeUnit;

/*** Author: 李阳* Date: 16/03/2017* Version: 1.0* Description:*/@Controller@RequestMapping(value = "/sms/alidayu")

public classSmsSender {

private static finalLogger logger= LoggerFactory.getLogger(SmsSender.class);

@AutowiredprivateRedisTemplate redisTemplate;

@Value("${alidayu.url}")

privateString url;

@Value("${alidayu.appKey}")

privateString appkey;

@Value("${alidayu.appSecret}")

privateString secret;

@Value("${alidayu.validation.smsTemplateCode}")

privateString smsTemplateCode;

@Value("${alidayu.validation.smsFreeSignName}")

privateString smsFreeSignName;

@Value("${redis.expiration}")

private intredisExpiration;

private finalString smsType= "normal";

/***发送短信验证码*/@RequestMapping(method = RequestMethod.POST, value = "/sender")

@ResponseBodypublicResponseEntityBody send(@RequestBodySmsCodeView smsCodeView) {

ResponseEntityBody responseEntityBody = newResponseEntityBody();

String phone = smsCodeView.getMobile();

AlibabaAliqinFcSmsNumSendResponse rsp = null;

String code = null;

try{

if(RegexUtil.isMobile(phone)) {

if(redisTemplate.hasKey(phone)) {

responseEntityBody.setOperationCode(OperationCode.SMS_SENT);

} else{

code = MathUtil.generateAuthCode(6);

TaobaoClient client = newDefaultTaobaoClient(url, appkey, secret);

AlibabaAliqinFcSmsNumSendRequest req = newAlibabaAliqinFcSmsNumSendRequest();

req.setExtend("extend info"); //扩展信息req.setSmsType(smsType); //短信类型“normal”req.setSmsFreeSignName(smsFreeSignName); //短信签名req.setSmsParamString("{\"code\":\""+ code + "\",\"product\":\"逗逼橙用户登录的\"}");//短信参数req.setRecNum(phone); //短信通知的手机号req.setSmsTemplateCode(smsTemplateCode); //短信模板rsp = client.execute(req); //发送短信

//短信发送成功,将验证码保存到redis中if(rsp.isSuccess()) {

redisTemplate.opsForValue().set(phone, code, redisExpiration, TimeUnit.SECONDS);

}

responseEntityBody.setOperationCode(OperationCode.SUCCESS);

}

} else{

responseEntityBody.setOperationCode(OperationCode.ERR_PHONE);

}

responseEntityBody.setBody(rsp);

} catch(ApiException e) {

logger.error(e.getMessage());

}

returnresponseEntityBody;

}

}

public classMathUtil {

/***生成验证码**@paramnum位数*@return纯数字验证码*/public staticString generateAuthCode(intnum) {

String chars = "0123456789";

char[] rands = new char[num];

for(inti = 0; i < num; i++) {

intrand = (int) (Math.random() * 10);

rands[i] = chars.charAt(rand);

}

return newString(rands);

}

}

alidayu配置信息:

##===================================== 配置 alidayu =====================================alidayu.url=http://gw.api.taobao.com/router/restalidayu.appKey=23666474alidayu.appSecret=f36e3407a2d18a5a7f03d32cddf67831# 阿里大于通知短信模版编码alidayu.notify.smsTemplateCode=SMS_52330022# 阿里大于验证短信模版编码alidayu.validation.smsTemplateCode=SMS_52330024# 阿里大于信息变更短信模版编码alidayu.infoChange.smsTemplateCode=SMS_52330017# 阿里大于卡挂失,解挂或注销成功后通知短信模版编码alidayu.cardNotify.smsTemplateCode=SMS_58245027# 阿里大于短信签名alidayu.validation.smsFreeSignName=逗逼橙

spring-boot项目中,在spring上下文中读取配置文件出现中文乱码,需要添加如下配置:

#配置spring上下使用spring-boot默认的utf-8字符编码spring.http.encoding.force=true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值