手机注册(发送短信验证码)

去阿里开通短信服务,accesskey号然后创建签名
复制粘贴代码就可使用,根据指导修改就ok
如有报错 不能使用 还请大家谅解。(没有经过作者同意,禁止修改代码,盗用(利用代码去骗取财钱);免费供大家参考使用)
联系方式QQ:913237269,添加时请说明一下
如有问题或有帮助请评论区评论


手机注册发送短信控制层(controller)

package com.ljma.web.mng.phoneregistration.controller;

import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.ljma.web.util.CodeUtil;
import com.ljma.web.util.SmsTool;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;

/**
  * @description: 手机短信验证
  * @author 卢嘉城
  * @date 2019/7/11
  /
@RestController
@RequestMapping(value = “/phone”)
public class PhoneRegistrationController {
/
*
* 发送短信
* @param phone
* @param request
* @return
* @throws ClientException
*/
@RequestMapping(value = “/smsXxs”)
@ResponseBody
public Map<String,Object> smsXxs(String phone, HttpServletRequest request) throws ClientException {
Map<String,Object> map = new HashMap<>();
// 验证码(指定长度的随机数)
String code = CodeUtil.generateVerifyCode(6);
String TemplateParam = “{“code”:”"+code+""}";
// 短信模板id
String TemplateCode = “SMS_129650038”;//如果使用不了(模板要更换属于自己的模板。)
SendSmsResponse response = SmsTool.sendSms(phone,TemplateParam,TemplateCode);
map.put(“verifyCode”,code);
map.put(“phone”,phone);
request.getSession().setAttribute(“CodePhone”,map);
if( response.getCode().equals(“OK”)) {
map.put(“isOk”,“OK”);
}
return map;
}

}

工具类(util)

package com.ljma.web.util;

import java.util.Random;

/**
  * @description: 手机号注册验证短信
  * @author 卢嘉城
  * @date 2019/7/11
  */
public class CodeUtil {
//使用到Algerian字体,系统里没有的话需要安装字体,字体只显示大写,去掉了1,0,i,o几个容易混淆的字符
public static final String VERIFY_CODES = “1234567890”;

/*** 使用系统默认字符源生成验证码* @param verifySize    验证码长度* @return*/
public static String generateVerifyCode(int verifySize){return generateVerifyCode(verifySize, VERIFY_CODES);
}/*** 使用指定源生成验证码* @param verifySize    验证码长度* @param sources   验证码字符源* @return*/
public static String generateVerifyCode(int verifySize, String sources){if(sources == null || sources.length() == 0){sources = VERIFY_CODES;}int codesLen = sources.length();Random rand = new Random(System.currentTimeMillis());StringBuilder verifyCode = new StringBuilder(verifySize);for(int i = 0; i < verifySize; i++){verifyCode.append(sources.charAt(rand.nextInt(codesLen-1)));}return verifyCode.toString();
}public static void main(String[] args) {System.out.println(generateVerifyCode(4));
}

}

工具类(新建一个文件名在util下面)

package com.ljma.web.util;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;

/**
  * @description: 手机号注册短信验证
  * @author 卢嘉城
  * @date 2019/7/11
  */
public class SmsTool {

//产品名称:云通信短信API产品,开发者无需替换
static final String product = "Dysmsapi";
//产品域名,开发者无需替换
static final String domain = "dysmsapi.aliyuncs.com";
// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
static final String accessKeyId = "自己的accesskey号了";
static final String accessKeySecret = "这个也是的 同样在上面截图里";
public static SendSmsResponse sendSms(String phone , String code, String TemplateCode) throws ClientException {//可自助调整超时时间System.setProperty("sun.net.client.defaultConnectTimeout", "10000");System.setProperty("sun.net.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);//组装请求对象-具体描述见控制台-文档部分内容SendSmsRequest request = new SendSmsRequest();//必填:待发送手机号request.setPhoneNumbers(phone);//必填:短信签名-可在短信控制台中找到request.setSignName("上面截图所要创建的签名");//必填:短信模板-可在短信控制台中找到request.setTemplateCode(TemplateCode);//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为request.setTemplateParam(code);//选填-上行短信扩展码(无特殊需求用户请忽略此字段)//request.setSmsUpExtendCode("90997");//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者//request.setOutId("yourOutId");//hint 此处可能会抛出异常,注意catchSendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);return sendSmsResponse;
}

}

手机注册(发送短信验证码)相关推荐

  1. 手机异步发送短信验证码解决方案-Celery+redis

    Celery介绍和使用 一.Celery介绍: 一个简单.灵活且可靠.处理大量消息的分布式系统,可以在一台或者多台机器上运行. Celery是一个功能完备即插即用的任务队列 单个 Celery 进程每 ...

  2. 网站app注册登录短信验证码是怎么获取实现的

    在我们的生活中,经常会遇到(www.yunxintong100.com)需要手机注册,手机验证,手机修改密码的时候,而这些操作都会收到手机验证码来进行身份验证,这样做的目的不仅是为了保护用户的安全使用 ...

  3. SSH2框架实现注册发短信验证码实例

    [原文连接]https://blog.csdn.net/u010539352/article/details/46858189 这两天开始敲代码了,让用SSH2框架,以前没有接触过Java项目更没有接 ...

  4. Nodejs实现给手机发送短信验证码用于登录功能(免费短信)

    我们开发的应用通常需要通过手机短信验证码验证进行登录,方便了那些容易忘记密码的用户,同时也降低了是密码被盗的风险性. 文章目录 1.注册容联云通信账号(免费) 2.nodejs发送请求即可发送短信验证 ...

  5. 各大APP注册时发送短信验证码是怎么实现的?

    回答这个问题可以从多个角度来回答,比如商务角度和技术角度,为了快速清晰的让广大的读者了解这个过程,本文我们从商务角度来深入分析. 实现原理 现各大APP发送短信的服务一般是由第三方短信服务商提供的,他 ...

  6. 魔方APP项目-05-注册功能实现,手机号唯一验证接口、客户端进行手机号验证、保存用户注册信息接口、客户端用户进行注册、使用云通讯发送短信,服务端实现发送短信验证码的api接口、客户端实现点击发送短信

    用户模块 注册功能实现 1.手机号码唯一验证接口 在开发中,针对客户端提交的数据进行验证或提供模型数据转换格式成字典给客户端.可以使用Marshmallow模块来进行. 为了方便导包,所以我们设置当前 ...

  7. JS实现注册登录发送短信验证码动态显示60S倒计时完整案例

    通常在web项目中都会遇到账户注册或者忘记密码时需要发送短信验证码的功能,虽然说这种功能很常见,但是实际开发过程中很多人还会遇到不少坑.笔者经过整理把最近项目中的用到的这个发送短信验证码动态显示60S ...

  8. 发送短信验证码到手机(阿里大于平台) java

    使用Eclipse通过阿里大于发送短信验证码至手机 第一次撰写博客,如有不足望提出且多多见谅! 最近项目当中需要用到手机验证码功能.所以一直都在找一家比较不错的短信平台,然而现在短信平台鱼龙混杂,还真 ...

  9. SpringBoot 实现手机发送短信验证码

    手机发送短信 内容 一.手机发送短信 1. 前端界面代码 2. UserInfoController 控制器 3. application.properties 配置类文件 4. 具体实现 总结 内容 ...

最新文章

  1. 漫画 | 人到中年,一地鸡毛
  2. Effective C++学习笔记(Part Five:Item 26-31)
  3. 一小段代码,得到项目决对路径
  4. python中的‘/’和'//'
  5. 安卓工控主板双网口有什么用途?
  6. Linux下V4L2编程小结
  7. JeecgBoot 移动OA 新版本出炉,速度体验!!!
  8. 频繁gc是什么意思_[JVM]一次线上频繁GC的问题解决
  9. K3/Cloud 用插件打开一张已存在的单据
  10. CAD必备插件分享 快速提高工作效率
  11. GPS时间转北京时间
  12. 摄像头测试程序无线摄像头测试程序
  13. restful api 与 GraphQL 分析比较
  14. Pinia(小菠萝)使用方法
  15. 整理:用matlab创作歌曲(三)
  16. 信息系统风险评估内容
  17. 消费新品周报 | 奔富发布2019珍藏系列16款葡萄酒;欧乐-B推出AI电动牙刷
  18. php计算时间早上中午,php如何判断上午还是下午
  19. 2021年上海市安全员C证考试试题及上海市安全员C证操作证考试
  20. php execl内存不足,PHPExcel读取Excel文件出现内存不足 各种情况处理办法

热门文章

  1. IB-PYP幼儿十大素质培养目标
  2. OSPF 路由汇总配置
  3. TabLayout联动ViewPager
  4. HTML中简单的声音语音MP3播放代码
  5. ESP32基于Arduino框架,SD卡+MAX98357模块+MP3播放器
  6. 网络状态是未连接,但是可以上网。强迫症患者福利
  7. 第二篇:mybatis核心接口
  8. struts2中页面语言国际化的方法
  9. 杂志征稿 教育杂志征稿
  10. 基于springboot西安酷跑健身房管理系统 毕业设计-附源码345421