阿里云的短信验证码功能实现
1、注册阿里云短信业务
1、开通服务
2、添加签名
3、添加模板
2、使用
1、导入maven依赖
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.28</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId></dependency><dependency><groupId>com.aliyun</groupId><artifactId>tea-openapi</artifactId><version>0.2.2</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>dysmsapi20170525</artifactId><version>2.0.9</version></dependency>
2、创建工具类,用于随机生成验证码RandomUtil.java
package com.tuzhi.service_msm.util;import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;/*** 获取随机数* * @author qianyi**/
public class RandomUtil {private static final Random random = new Random();private static final DecimalFormat fourdf = new DecimalFormat("0000");private static final DecimalFormat sixdf = new DecimalFormat("000000");public static String getFourBitRandom() {return fourdf.format(random.nextInt(10000));}public static String getSixBitRandom() {return sixdf.format(random.nextInt(1000000));}/*** 给定数组,抽取n个数据* @param list* @param n* @return*/public static ArrayList getRandom(List list, int n) {Random random = new Random();HashMap<Object, Object> hashMap = new HashMap<Object, Object>();// 生成随机数字并存入HashMapfor (int i = 0; i < list.size(); i++) {int number = random.nextInt(100) + 1;hashMap.put(number, i);}// 从HashMap导入数组Object[] robjs = hashMap.values().toArray();ArrayList r = new ArrayList();// 遍历数组并打印数据for (int i = 0; i < n; i++) {r.add(list.get((int) robjs[i]));System.out.print(list.get((int) robjs[i]) + "\t");}System.out.print("\n");return r;}
}
2、创建service业务类MsmServiceImpl.java
package com.tuzhi.service_msm.service.impl;import com.alibaba.fastjson.JSONObject;
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.teaopenapi.models.Config;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import com.tuzhi.service_msm.service.MsmService;
import com.tuzhi.utilcommon.result.Result;
import com.tuzhi.utilcommon.result.ResultCode;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;import java.util.Map;@Service
public class MsmServiceImpl implements MsmService {//发送短信的方法@Overridepublic boolean send(Map<String, Object> param, String phone){//配置文件Config config = new Config().setAccessKeyId("LTAI5t8UDYKyZiH7fLespJrm").setAccessKeySecret("oeQPbwJ8aWSyG9Q2sKtDifmZN0iIOU");config.endpoint = "dysmsapi.aliyuncs.com";try {//客户端Client client = new Client(config);SendSmsRequest request = new SendSmsRequest();request.setPhoneNumbers(phone);request.setSignName("阿里云短信测试");request.setTemplateCode("SMS_154950909");request.setTemplateParam(JSONObject.toJSONString(param));//发送client.sendSms(request);} catch (Exception e) {e.printStackTrace();return false;}return true;}
}
3、创建控制层使用
@Autowired
private MsmService msmService;@Autowired
private RedisTemplate<String,String> redisTemplate;//发送短信的方法
@GetMapping("send/{phone}")
public Result sendMsm(@PathVariable String phone) {//1 从redis获取验证码,如果获取到直接返回String code = redisTemplate.opsForValue().get(phone);if(!StringUtils.isEmpty(code)) {return Result.ok();}//2 如果redis获取 不到,进行阿里云发送//生成随机值,传递阿里云进行发送code = RandomUtil.getFourBitRandom();Map<String,Object> param = new HashMap<>();param.put("code",code);//调用service发送短信的方法boolean isSend = msmService.send(param,phone);if(isSend) {//发送成功,把发送成功验证码放到redis里面//设置有效时间redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);return Result.ok();} else {return Result.error().codeAndMessage(ResultCode.VALID_CODE_SEND_FAIL);}
}redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);return Result.ok();} else {return Result.error().codeAndMessage(ResultCode.VALID_CODE_SEND_FAIL);}
}
阿里云的短信验证码功能实现相关推荐
- 阿里云的短信验证功能实现
阿里云的短信验证功能实现 第一步:申请 签名,模板,RAM访问控制 签名 模板 RAM访问控制 创建用户 创建完一定要保存 这个 截图里面的参数 这只能看一次 创建完成,添加授权 搜索 短信 添加 管 ...
- 使用阿里云发送短信验证码
目录 一.用户注册登录流程 二.使用阿里云发送短信验证码 ⭐生成密钥 ⭐将密钥配置到项目中 ⚪新建properties文件并填入相应信息 ⚪pom配置 ⚪ 测试代码 ⚪添加签名 ⚪添加短信发送的模 ...
- java短信内容加链接_Java加腾讯云实现短信验证码功能
准备工作 1.选择服务 2.添加应用:我已经添加完了 3.点击应用名称 4.出现ID和Key 5.编辑短信创建签名 6.在第5步后 使用到的jar包: qcloudsms-1.0.2.jar com. ...
- 使用阿里云发送短信验证码(JAVA实现)
文章目录 准备工作 完成阿里云认证 生成秘钥 申请签名和模板 编写代码 需要引入的JAR包依赖 代码 充钱 准备工作 我们首先登陆阿里云 https://www.aliyun.com 完成阿里云认证 ...
- 新版阿里云发送短信验证码详解
关与作者更多博客请访问云里云外开源社区 一.申请短信服务步骤 首先进入阿里云控制台,点击左侧产品与服务,找到短信服务. 第一次进入会有新手引导,这里主要介绍一下大致步骤和易错点 申请短信签名和模板 短 ...
- 调用阿里云发送短信验证码的工具类
/*** @Description 阿里云短信发送工具类* @Author 曰业而安*/ public class SendSmsUtil { //phone 手机号 //param 验证码 注意这里 ...
- 阿里云的短信验证码(详细)
官方流程图 如何发送一条短信 为了成功发送一条短信通知,您至少需要完成以下步骤 (刚需) 一.在控制台完成短信签名与短信模版的申请,获得调用接口必备的参数 在"短信签名"页面完成签 ...
- 阿里云发送短信验证码失败
报错: 把require_once '/api_sdk/vendor/autoload.php'; 改为 require_once __DIR__ .'/api_sdk/vendor/autolo ...
- 【Springboot】| 阿里云发送短信验证码,你会了吗?
- Springboot实现短信验证码功能(阿里云)
最近在写毕业设计,找回密码时用到了短信验证码功能,记录如下,初学者 大神勿喷 通过阿里云实现短信验证功能,一定要申请一个阿里账号 登录阿里云控制台,通过AccessKey 开启子用户,添加一个用户组和 ...
最新文章
- [探讨]route print PC与交换机的区别
- python PyQt5.QtWidgets.QWidget类
- IT项目管理总结:第六章 项目时间管理
- UNITY编辑器模式下static变量的坑
- TCP和UDP套接字编程
- matlab中y=x(:,ones(1,3))的含义解读
- c++进制转换代码_轻松实现C/C++各种常见进制相互转换,你还不会你就落后了
- csv python 只写一次_在Python CSV Writer循环中写入一次头
- css中调整高度充满_6个很棒的PostCSS插件,让您成为一个CSS向导
- 数据分析必备的统计学(二):假设检验
- jquery选择器之基本选择器
- 解决Latex编译报错:Command `\Bbbk‘ already defined. ...ol{\Bbbk} {\mathord}{AMSb}{“7C}
- 复旦NLP组:大厂模型的鲁棒性进步了吗?
- 一个经典实用的iptables shell脚本
- 【SICP练习】142 练习3.77
- 【模拟电路】电源效率与散热
- markdown笔记1--设置字体、颜色、图片、背景色
- matlab特定颜色提取
- 分散的无纸记录仪如何通过无线集中实现短信报警
- 【观察】“专精特新”数智化国产替代,为何首选用友U9cloud?