200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > jeecg 手机注册 阿里云短信API 【 阿里云短信发送验证码 平台配置和项目中使用】

jeecg 手机注册 阿里云短信API 【 阿里云短信发送验证码 平台配置和项目中使用】

时间:2022-01-16 10:59:58

相关推荐

jeecg 手机注册 阿里云短信API 【 阿里云短信发送验证码 平台配置和项目中使用】

文章目录

jeecg项目效果展示短息通知页面入口代码中调用短信api 配置和代码API中的重要参数配置项:阿里控制台注册注册签名注册短信模板

阿里云短信发送验证码配置和项目使用

jeecg

第一次接触jeecg框架后,对这个框架就很喜欢,Jeecg是一款基于SpringBoot+代码生成器的快速开发平台!采用前后端分离架构:SpringBoot,Mybatis,Shiro,JWT,Vue&Ant Design。强大的代码生成器让前端和后台代码一键生成。作为一个公司全栈打杂码农,有了这个框架,可以提高工作效率。好学不如烂笔头,记录一下,以后难免会再次使用到。

项目效果展示

短息通知页面入口

这是一个页面注册页面,发送验证码到用户手机

vue代码展示:

<a-col class="gutter-row" :span="8"><a-buttonclass="getCaptcha"tabindex="-1":disabled="state.smsSendBtn"@click.stop.prevent="getCaptcha"v-text="!state.smsSendBtn && '获取验证码' || (state.time+' s')"></a-button></a-col>

getCaptcha方法:

getCaptcha (e) {e.preventDefault();let that = this;this.form.validateFields([ 'mobile' ], {force: true },(err,values) => {if(!values.mobile){that.cmsFailed("请输入手机号");}else if (!err) {this.state.smsSendBtn = true;let interval = window.setInterval(() => {if (that.state.time-- <= 0) {that.state.time = 60;that.state.smsSendBtn = false;window.clearInterval(interval);}}, 1000);const hide = this.$message.loading('验证码发送中..', 0);let smsParams = {};smsParams.mobile=values.mobile;smsParams.smsmode="0";postAction("/sys/sms",smsParams).then(res => {if(!res.success){setTimeout(hide, 0);this.cmsFailed(res.message);}console.log(res);setTimeout(hide, 500);}).catch(err => {setTimeout(hide, 1);clearInterval(interval);that.state.time = 60;that.state.smsSendBtn = false;this.requestFailed(err);});}});}

代码中调用短信api 配置和代码

/sys/sms控制层代码:

/*** 短信登录接口* * @param jsonObject* @return*/@PostMapping(value = "/sms")public Result<String> sms(@RequestBody JSONObject jsonObject) {Result<String> result = new Result<String>();String mobile = jsonObject.get("mobile").toString();//手机号模式 登录模式: "2" 注册模式: "1"String smsmode=jsonObject.get("smsmode").toString();log.info(mobile);if(oConvertUtils.isEmpty(mobile)){result.setMessage("手机号不允许为空!");result.setSuccess(false);return result;}Object object = redisUtil.get(mobile);if (object != null) {result.setMessage("验证码10分钟内,仍然有效!");result.setSuccess(false);return result;}//随机数String captcha = RandomUtil.randomNumbers(6);JSONObject obj = new JSONObject();obj.put("code", captcha);try {boolean b = false;//注册模板if (CommonConstant.SMS_TPL_TYPE_1.equals(smsmode)) {SysUser sysUser = sysUserService.getUserByPhone(mobile);if(sysUser!=null) {result.error500(" 手机号已经注册,请直接登录!");sysBaseAPI.addLog("手机号已经注册,请直接登录!", CommonConstant.LOG_TYPE_1, null);return result;}b = DySmsHelper.sendSms(mobile, obj, DySmsEnum.REGISTER_TEMPLATE_CODE);}else {//登录模式,校验用户有效性SysUser sysUser = sysUserService.getUserByPhone(mobile);result = sysUserService.checkUserIsEffective(sysUser);if(!result.isSuccess()) {return result;}/*** smsmode 短信模板方式 0 .登录模板、1.注册模板、2.忘记密码模板*/if (CommonConstant.SMS_TPL_TYPE_0.equals(smsmode)) {//登录模板b = DySmsHelper.sendSms(mobile, obj, DySmsEnum.LOGIN_TEMPLATE_CODE);} else if(CommonConstant.SMS_TPL_TYPE_2.equals(smsmode)) {//忘记密码模板b = DySmsHelper.sendSms(mobile, obj, DySmsEnum.FORGET_PASSWORD_TEMPLATE_CODE);}}if (b == false) {result.setMessage("短信验证码发送失败,请稍后重试");result.setSuccess(false);return result;}//验证码10分钟内有效redisUtil.set(mobile, captcha, 600);//update-begin--Author:scott Date:0812 for:issues#391//result.setResult(captcha);//update-end--Author:scott Date:0812 for:issues#391result.setSuccess(true);} catch (ClientException e) {e.printStackTrace();result.error500(" 短信接口未配置,请联系管理员!");return result;}return result;}

随机生成6位验证码

String captcha = RandomUtil.randomNumbers(6);JSONObject obj = new JSONObject();obj.put("code", captcha);

选择短信模板

/*** smsmode 短信模板方式 0 .登录模板、1.注册模板、2.忘记密码模板*/if (CommonConstant.SMS_TPL_TYPE_0.equals(smsmode)) {//登录模板b = DySmsHelper.sendSms(mobile, obj, DySmsEnum.LOGIN_TEMPLATE_CODE);} else if(CommonConstant.SMS_TPL_TYPE_2.equals(smsmode)) {//忘记密码模板b = DySmsHelper.sendSms(mobile, obj, DySmsEnum.FORGET_PASSWORD_TEMPLATE_CODE);}

sendSms 方法:

public static boolean sendSms(String phone,JSONObject templateParamJson,DySmsEnum dySmsEnum) throws ClientException {//可自助调整超时时间System.setProperty(".client.defaultConnectTimeout", "10000");System.setProperty(".client.defaultReadTimeout", "10000");//初始化acsClient,暂不支持region化IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);IAcsClient acsClient = new DefaultAcsClient(profile);//验证json参数validateParam(templateParamJson,dySmsEnum);//组装请求对象-具体描述见控制台-文档部分内容SendSmsRequest request = new SendSmsRequest();//必填:待发送手机号request.setPhoneNumbers(phone);//必填:短信签名-可在短信控制台中找到request.setSignName(dySmsEnum.getSignName());//必填:短信模板-可在短信控制台中找到request.setTemplateCode(dySmsEnum.getTemplateCode());//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为request.setTemplateParam(templateParamJson.toJSONString());//选填-上行短信扩展码(无特殊需求用户请忽略此字段)//request.setSmsUpExtendCode("90997");//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者//request.setOutId("yourOutId");boolean result = false;//hint 此处可能会抛出异常,注意catchSendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);logger.info("短信接口返回的数据----------------");logger.info("{Code:" + sendSmsResponse.getCode()+",Message:" + sendSmsResponse.getMessage()+",RequestId:"+ sendSmsResponse.getRequestId()+",BizId:"+sendSmsResponse.getBizId()+"}");if ("OK".equals(sendSmsResponse.getCode())) {result = true;}return result;}

API中的重要参数配置项:

这两个参数是固定配置项,不需要修改

product :“Dysmsapi”产品名称:云通信短信API产品,

domain:""产品域名

这两项是开发者自己的AccessKey,在阿里云平台上可以查看:

accessKeyId:“xxxxxx”开发者自己的用户AccessKey

accessKeySecret:“xxxxxxx”开发者自己的AccessKey Secret

阿里控制台注册

注册签名

添加成功后,需要1~2小时的审核;审核通过 就可以正常使用。

注册短信模板

平台根据 使用范围提供了模板库

添加成功后,也是需要1~2小时的审核;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。