springboot结合redis实现短信登陆

登录阿里云控制台

阿里云地址:https://www.aliyun.com/

在搜索栏目搜索短信服务,然后点击;

在控制台首页点击我的–>AccessKey管理,然后点击


点击开始使用子用户

然后创建用户组并且给用户组添加短信权限(在搜索栏搜索sms),然后创建用户,用户添加至用户组,此处设计AccessKey没有截图

然后在进入短信服务中,申请签名与模板


等待两个小时,申请通过后就可以使用了;

导入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.1</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

测试短信(test)

DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "accessKeyId", "生成accessKeys所对应的密码");IAcsClient client = new DefaultAcsClient(profile);CommonRequest request = new CommonRequest();request.setSysMethod(MethodType.POST);request.setSysDomain("dysmsapi.aliyuncs.com");request.setSysVersion("2017-05-25");request.setSysAction("SendSms");request.putQueryParameter("PhoneNumbers", "电话号码");request.putQueryParameter("SignName", "签名名称");request.putQueryParameter("TemplateCode", "模板代码");Map<String,Object> map = new HashMap<>();map.put("code",666666);request.putQueryParameter("TemplateParam", JSONObject.toJSONString(map));try {CommonResponse response = client.getCommonResponse(request);System.out.println(response.getData());} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();}

测试成功,然后结合redis,实现短信登陆验证码
新建controller实现登陆

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.UUID;
import java.util.concurrent.TimeUnit;@RestController
public class SendSmsController {@Autowiredprivate RedisTemplate<String,String> redisTemplate;@Autowiredprivate SendSms sendSms;@GetMapping("/send/{phone}")public String code(@PathVariable("phone") String phone){String code = redisTemplate.opsForValue().get(phone);if (!StringUtils.isEmpty(code)){return phone + ": " + code + "该验证尚未过期!";}//生成验证码code = UUID.randomUUID().toString().substring(0, 4);Map<String,Object> map = new HashMap<>();map.put("code",code);Boolean aBoolean = sendSms.sendSms(phone, "SMS_200721357", map);if (aBoolean){redisTemplate.opsForValue().set(phone,code,100, TimeUnit.SECONDS);return phone + ":" + code + "发送成功!";}else {return  phone + ":" + "发送失败!";}}
}

新建service及service实现类,此处省略service类

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.diting.Service.SendSms;
import org.springframework.stereotype.Service;import java.util.Map;@Service
public class SendSmsImpl implements SendSms {@Overridepublic Boolean sendSms(String phoneNum, String templateCode, Map<String, Object> code) {DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "accessKeysId", "生成accessKeys所对应的密码");IAcsClient client = new DefaultAcsClient(profile);CommonRequest request = new CommonRequest();request.setSysMethod(MethodType.POST);request.setSysDomain("dysmsapi.aliyuncs.com");request.setSysVersion("2017-05-25");request.setSysAction("SendSms");request.putQueryParameter("PhoneNumbers", phoneNum);request.putQueryParameter("SignName", "签名名称");request.putQueryParameter("TemplateCode", templateCode);request.putQueryParameter("TemplateParam", JSONObject.toJSONString(code));try {CommonResponse response = client.getCommonResponse(request);return response.getHttpResponse().isSuccess();} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();}return false;}
}

测试成功!

spring boot结合redis实现阿里云短信验证码相关推荐

  1. 阿里云短信验证码实战

    一.创建阿里云短信权限用户 1.登陆阿里云之后我们点击头像,接着点击AccessKey: 2.选择开始使用子用户 : 3.我们先要创建一个用户组: 4.依次点击新建的用户组--授权管理,给用户组授权, ...

  2. 使用阿里云短信验证码API发送短信验证码(配置,获取短信验证码,注册,登录,密码重置)

    获取阿里云短信验证码需要的配置信息. 如果是新用户,可以免费领取3个月,老用户的话就只能购买了,但是也不贵. 申请短信签名 申请短信模板 编写发送短信验证码的工具类 代码中我已经进行了详细的注释,也写 ...

  3. springboot 使用shiro集成阿里云短信验证码

    目录 1.阿里云短信验证码服务 2.发送短信验证码 3.shiro配置多个realm 4.验证短信验证码 5.一些修改思路 引言:短信验证码是通过发送验证码到手机的一种有效的验证码系统,主要用于验证用 ...

  4. nodejs实现阿里云短信验证码

    nodejs实现阿里云短信验证码 事先准备 1.开通阿里云短信服务 2.获取 AccessKey 代码编写 事先准备 1.开通阿里云短信服务 1⃣️登陆阿里云,然后进入到 https://dysms. ...

  5. 【阿里云短信验证码】麻瓜教程~~~从注册---申请---代码---执行

    阿里云短信验证码 当然啦,学习任何东西第一步就是去注册当前网站的账号. 阿里云的官网:https://www.aliyun.com/?utm_content=se_1008364713 ◆[1.先注册 ...

  6. C# ASP.NET MVC 阿里云短信验证码Demo

    相信大家在开发过程中又很多使用到验证码验证的功能,今天将验证码的验证整理一下写了一个Demo 通过本篇后你能学习到: 阿里云短信服务 Drapper连接SQL Server进行增改操作 JS前端倒计时 ...

  7. [风一样的创作]二次封装阿里云短信 验证码 发送短信 查询短信 编辑短信

    1.首先要注册阿里云,购买阿里云短信服务,拿到AccessKey ID和AccessKey Secret 链接: https://usercenter.console.aliyun.com/#/man ...

  8. Thinkphp3.2开发阿里云短信验证码

    之前一直使用的是创蓝253的短信验证码,开发起来比较方便,不想阿里云这么复杂.有兴趣的同学可以去看一下创蓝253的短信验证码(https://www.253.com). 今天主要说一下阿里云的短信验证 ...

  9. 阿里云短信验证码的坑.....

    阿里云短信的坑 博主在集成阿里云短信的时候发生了此问题: 明明生成6位数字的验证码结果,通过阿里云短信发送出来有时只有5位. 解决办法也很简单我就直接贴代码,说原因了. 原因是: 问题原因:因为我返回 ...

最新文章

  1. document.getElementById()和document.forms[0].submit()
  2. Linux Kernel TCP/IP Stack — L4 Layer
  3. 北海市卫生学校计算机教室,北海卫校2021年招生简章_北海市卫生学校
  4. Citus数据分片分布研究(一 在工作节点直接操作表)
  5. 【Linux】一步一步学Linux——visudo命令(104)
  6. linux 字符串转数字排序,linux中sort命令排序功能实现方法
  7. bzoj1084: [SCOI2005]最大子矩阵
  8. nodemailer使用_如何使用Nodemailer使用HTML作为内容发送电子邮件 Node.js
  9. django get和filter方法的几点不同
  10. 句句真研—每日长难句打卡Day9
  11. maven spring hibernate shiro
  12. 【Python数据分析】数据预处理3——数据规约(含主成分分析详解、Python主要预处理函数)
  13. 利用ENVI自带全球DEM数据计算区域平距高程
  14. 搭建ssm中遇到的问题
  15. word 批量把参考文献的交叉引用变成上标形式
  16. 一键添加QQ群的方式(更新中。。。)
  17. QDialog的accept()函数和reject()函数
  18. 一台显示器分成双屏_双屏办公,用起来到底有多爽
  19. 【AWVS】python调AWVS接口 新建扫描并导出扫描报告 [自定义扫描报告](三)
  20. 服务器怒稳定进不了某个网址,登录服务器的一瞬间,让我感觉自己再也不是“菊外人”...

热门文章

  1. 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(三)商业逻辑代码部分...
  2. 软考证书遗失补办、换证流程,这几样资料1个都不能少
  3. 接口测试系列 | 莉莉丝公司接口测试实践分享
  4. 互联网消费时代,保健品如何应对保健食品的“战帖”?
  5. 不信任到 Visual Basic Project 的程序连接
  6. vue获取麦克风_前端多媒体-1.获取摄像头麦克风
  7. PHP笔记-验证码例子
  8. 【计算机图形学】期末考试课后习题重点复习(第5-8章)
  9. 提高代码阅读能力的 7 种方法
  10. 密码复杂度正则表达式