博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏。

        为了实现在手机注册和登录时获取手机验证码,我使用了阿里的短信服务,下面就来介绍一下具体如何实现。将介绍代码层面如何使用的,去阿里开通该服务,以及如何获得你的accessKeyId和accessKeySecret等。

一、在pom.xml中引入阿里的短信服务依赖

        <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.1.0</version></dependency>

二、在util工具包下新建一个发送短信类SmsService

1、对里面的一些参数进行介绍:

(1)TemplateCode是阿里>短信服务>国内消息>模板管理中的对应消息的模板CODE值。

(2)accessKeyid和accessKeySecret需要登录阿里云网站>点击头像>accessKeys,到里面新建用户拿到。拿到以后我们需要在权限管理处给该用户授权管理短信服务的权限,没有的话会报错。这两个属性只会在新建的时候出现一次,注意保存。

(3)SignName必须设置,是你的短信签名,在签名管理中找签名名称。

(4)TemplateParam给短信模板中设置的参数赋值,有几个参数名赋几个参数,键和你赋的值对应。

(5)其他的基本都好理解了,也不需要改动。

public class SmsService {public static void send(String phone,String key){
//第二个参数为自己独有的accessKeyid,第三个参数为自己独有的accessKeySecretDefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou","LTAI1hYCS9XTEacVqo","0ynfa4RQlbrDpvSz3jZpszcik6aLAAM");IAcsClient client = new DefaultAcsClient(profile);CommonRequest request = new CommonRequest();//组装请求对象//request.setProtocol(ProtocolType.HTTPS);request.setMethod(MethodType.POST);//设置post提交request.setDomain("dysmsapi.aliyuncs.com");//短信API产品域名(接口地址固定,无需修改)request.setVersion("2017-05-25");request.setAction("SendSms");request.putQueryParameter("RegionId", "cn-hangzhou");request.putQueryParameter("PhoneNumbers", phone);request.putQueryParameter("SignName", "健康教育");//短信签名request.putQueryParameter("TemplateCode", "SMS_162731312");request.putQueryParameter("TemplateParam", "{code:"+key+"}");try {CommonResponse response = client.getCommonResponse(request);System.out.println(response.getData());} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();}
}
}

2、为了测试一下,是否配置成功,我们可以在该类中写一个main方法传参进去,运行项目看看收到没,代码如下:成功以后,把这个类中的main方法删除即可。

    public static  void main(String []args){SmsService.send("18438595560","1100");}

三、我们在业务中调用这个类就可以发送短信验证了。

1、简单举个controller类中我调用的的例子。

(1)我们通过前台用户点击获取验证码,使用ajax技术把用户的手机号传过来,session中保存我后台生成的code,为了将来拿出来与用户提交的进行比较。拿到验证码和手机号调用SmsService类发送过去。可以借鉴一下:

/*** 后台获得验证码*/@RequestMapping("/getcode")@ResponseBodypublic int getcode(String phone) {long l=System.currentTimeMillis();int k1=(int) (l%10000);String code=String.valueOf(k1);//session中保存我后台生成的code,为了将来拿出来与用户提交的进行比较。Subject subject = SecurityUtils.getSubject();Session session = subject.getSession();session.setAttribute("autocode",code);//成功返回0,失败返回1if(phone!=null){//把后台生成的code和所发送的手机号传进发送消息类,调用执行。SmsService.send(phone,code);return 0;}else{return 1;}}

(2)当用户在前台验证码框输入验证码后,离开表单时,通过ajax把输入的验证码传到后台与后台生成的验证码进行比较,根据比较结果返回不同的响应。通过这种方式进行验证码正确性比较,显而易见,在用户提交表单之前我们就进行了正确性比较,不对的话用户会收到提示,根本不会提交表单成功!

 /***判断验证码的正确性*/@RequestMapping("/comparecode")@ResponseBodypublic int authorization(String preauthcode) {Subject subject = SecurityUtils.getSubject();Session session = subject.getSession();String autocode= (String) session.getAttribute("autocode");//验证码不为空时,到后台进行比较,返回响应码,为1,提示请先获得验证码//为2,提示验证码错误//为3,验证码正确,无提示if(autocode==null){return 1;}else if(autocode.equals(preauthcode)){return 3;}else{return 2;}}

四、以上就是使用阿里短信服务实现手机验证码的过程,思路比较简单,只具体阐释了发送短信类的参数,以及后台验证的具体实现,前台代码就很简单了,使用表单和写一些ajax代码。更多精彩请关注微信公众号,欢迎交流技术。

spring boot中如何实现在手机注册和登录时获取验证码(阿里短信服务)相关推荐

  1. java中阿里短信服务(附带随机短信验证码生成类) --菜鸟小回

    java中阿里短信服务(短信验证码) 文章目录 java中阿里短信服务(短信验证码) 1. 创建签名 2. 创建模板 3. 测试验证码功能 4. 查看Api Demo 5. 获取AK信息 6. 复制A ...

  2. XX健康:移动端开发-体检预约设计和实现微信公众号注册阿里短信服务

    1. 移动端开发 1.1 移动端开发方式 随着移动互联网的兴起和手机的普及,目前移动端应用变得愈发重要,成为了各个商家的必争之地.例如,我们可以使用手机购物.支付.打车.玩游戏.订酒店.购票等,以前只 ...

  3. Spring Boot中实现简单表单提交(登录功能)

    目录 原理 源码 原理 使用@PostMapping可以得到前端Post的Mapping! @RequestParam可以获取详细的参数信息: 程序运行截图如下(登录成功): 程序运行截图如下(登录失 ...

  4. idea+spring boot把本地jar打包war(阿里短信服务相关)

    https://blog.csdn.net/weixin_41662670/article/details/79649541

  5. 【spring boot2】第8篇:spring boot 中的 servlet 容器及如何使用war包部署

    嵌入式 servlet 容器 在 spring boot 之前的web开发,我们都是把我们的应用部署到 Tomcat 等servelt容器,这些容器一般都会在我们的应用服务器上安装好环境,但是 spr ...

  6. Spring Boot中使用JavaMailSender发送邮件

    相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送.在Spring Boot的Starter模块中也为此提供了自动化配置.下面通过实例看看 ...

  7. Spring Boot中的Properties

    文章目录 简介 使用注解注册一个Properties文件 使用属性文件 Spring Boot中的属性文件 @ConfigurationProperties yaml文件 Properties环境变量 ...

  8. 在Spring Boot中配置web app

    文章目录 添加依赖 配置端口 配置Context Path 配置错误页面 在程序中停止Spring Boot 配置日志级别 注册Servlet 切换嵌套服务器 在Spring Boot中配置web a ...

  9. twilio_15分钟内使用Twilio和Stormpath在Spring Boot中进行身份管理

    twilio 建筑物身份管理,包括身份验证和授权? 尝试Stormpath! 我们的REST API和强大的Java SDK支持可以消除您的安全风险,并且可以在几分钟内实现. 注册 ,再也不会建立au ...

  10. 15分钟内使用Twilio和Stormpath在Spring Boot中进行身份管理

    建筑物身份管理,包括身份验证和授权? 尝试Stormpath! 我们的REST API和强大的Java SDK支持可以消除您的安全风险,并且可以在几分钟内实现. 注册 ,再也不会建立auth了! 今天 ...

最新文章

  1. linux内核网络协议栈--数据接收流程图(五)
  2. Jenkins构建自动化脚本执行无界面解决方法
  3. antd option宽度自适应_网站自适应模板是什么
  4. 什么是编译型和解释型语言?
  5. 96KB存储器的怎么算地址范围_产品条码怎么申请费用
  6. The .NET Core runtime can be found at:(Windows)
  7. mysql 汉化成中文版
  8. 2022年了,微信透明头像怎么设置?不多说,安排
  9. python学习笔记02-分支循环(图灵学院视频笔记)
  10. mac 安装win7 攻略
  11. python 实现问卷星自动填写多份
  12. linux drm 架构 基础
  13. 4十4十4写成乘法算式_乘法口诀和乘法算式怎么写
  14. 深圳的“专精特新”实力如何?
  15. python正则表达式介绍
  16. GRO checksum在tcpdump中incorrect的问题
  17. 基于matlab的正交振幅调制与解调,正交幅度调制和解调(QAM)
  18. mug网络用语_餐饮服务专用术语
  19. 闲鱼源码搭建+后台管理
  20. JavaFX示例--TimeLine和Animation的使用

热门文章

  1. EGO Swarm翻译
  2. 当孙子兵法遇上词云,会有怎样的碰撞?
  3. ESD笔记(三)_常用ESD保护电路优缺点
  4. 黑苹果完美升级mac10.13.6,更换内置无线网卡dw1820A
  5. Win10系统电脑开机后显示无法登录到你的账户解决办法(亲测)
  6. 软件测试的意义究竟是什么?
  7. 详解 box-shadow
  8. Js~Boxy中的复杂弹出框
  9. 开发用的到java数组吗_java数组
  10. 第7章 区块链开发平台:超级账本