短信服务介绍:

目前市场上有很多第三方提供的短信服务,这些第三方短息服务会和各个运营商(移动,联通,电信)对接,我们只需要注册成为会员,并且按照提供的开发文档进行调用就可以完成发送短信,需要说明的是,这些短信服务一般都是收费服务。

常用的短信服务:

阿里云

华为

腾讯云

京东

梦网

乐信

以下主要用阿里云的短信发送服务来开展!

阿里云短信服务--介绍

阿里云短信服务是广大企业客户快速触达手机用户所优选使用的通信能力,调用api或者群发助手,即可发送验证码,通知类和营销类短信,国内验证短信秒级触达,到达率最高可到99%;国际/港澳台短信覆盖200多个国家和地区,安全稳定,广受出海企业选用。

应用场景:

验证码

短信通知

推广短信

在阿里云完成相关的申请即可使用官方代码来进行业务操作 !

(1)引入阿里云的手机验证依赖

    <!--阿里云短信服务--><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.16</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>2.1.0</version></dependency>

(2)改装短信发送代码

/*** 短信发送工具类*/
public class SMSUtils {/*** 发送短信* @param signName 签名* @param templateCode 模板* @param phoneNumbers 手机号* @param param 参数*/public static void sendMessage(String signName, String templateCode,String phoneNumbers,String param){DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "accessKeyId", "secret");IAcsClient client = new DefaultAcsClient(profile);SendSmsRequest request = new SendSmsRequest();request.setSysRegionId("cn-hangzhou");request.setPhoneNumbers(phoneNumbers);request.setSignName(signName);request.setTemplateCode(templateCode);request.setTemplateParam("{\"code\":\""+param+"\"}");try {SendSmsResponse response = client.getAcsResponse(request);System.out.println("短信发送成功");}catch (ClientException e) {e.printStackTrace();}}}

业务层根据模板进行发送验证码的操作

并且在登录时候判断验证码输入是否正确

验证法正确输入后判断是否为新用户

如果是新用户自动进行增加用户操作

@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {@Autowiredprivate UserService userService;/*** 发送手机短信验证码* @param user* @return*/@PostMapping("/sendMsg")public R<String> sendMsg(@RequestBody User user, HttpSession session){//获取手机号String phone = user.getPhone();if(StringUtils.isNotEmpty(phone)){//生成随机的4位验证码String code = ValidateCodeUtils.generateValidateCode(4).toString();log.info("code={}",code);//调用阿里云提供的短信服务API完成发送短信//SMSUtils.sendMessage("签名","",phone,code);//需要将生成的验证码保存到Sessionsession.setAttribute(phone,code);return R.success("手机验证码短信发送成功");}return R.error("短信发送失败");}/*** 移动端用户登录* @param map* @param session* @return*/@PostMapping("/login")public R<User> login(@RequestBody Map map, HttpSession session){log.info(map.toString());//获取手机号String phone = map.get("phone").toString();//获取验证码String code = map.get("code").toString();//从Session中获取保存的验证码Object codeInSession = session.getAttribute(phone);//进行验证码的比对(页面提交的验证码和Session中保存的验证码比对)if(codeInSession != null && codeInSession.equals(code)){//如果能够比对成功,说明登录成功LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(User::getPhone,phone);User user = userService.getOne(queryWrapper);if(user == null){//判断当前手机号对应的用户是否为新用户,如果是新用户就自动完成注册user = new User();user.setPhone(phone);user.setStatus(1);userService.save(user);}session.setAttribute("user",user.getId());return R.success(user);}return R.error("登录失败");}}

发送短信验证码执行登录操作相关推荐

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

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

  2. 06-发送短信验证码实现登录功能

    1.发送短信验证码实现登录功能的流程 1.1.获取验证码流程 1.2.登录流程 1.3.页面带有图形验证码的流程 2. 注册登录二合一页面的开发 2.1.将src目录下的App.vue页面上通用显示的 ...

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

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

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

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

  5. python发送短信验证码登录_python发送短信验证码

    原标题:python发送短信验证码 业务: 手机端点击发送验证码,请求发送到python端,由python调用榛子云短信http://smsow.zhenzikj.com的短信接口,生成验证码并发送. ...

  6. go 实现发送短信验证码登录

    现在大多数app或wap都实现了通过手机号获取验证码进行验证登录,下面来看下用go来实现手机号发送短信验证码登录的过程,基于的框架是gin . 首先是短信服务商的申请,比如腾讯云.阿里云.网易易盾等, ...

  7. Java 发送短信验证码

    Java 发送短信验证码给手机 发送短信验证码其实很简单,就是调用一下第三方的短信API接口,填写参数,发送请求,第三方平台会将信息发送给对方手机当中 介绍 我个人测试所使用的第三方API是" ...

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

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

  9. python短信验证码_python实现发送短信验证码(2)

    这次我们为大家继续介绍,python发送短信验证码. 首先我们需要: 1.获取 SDKAppID 和 AppKey 云短信应用 SDKAppID 和 AppKey 可在 短信控制台 的应用信息里获取. ...

最新文章

  1. 27行代码AC_How Many Tables HDU - 1213(并查集讲解)
  2. 杭州刚公布完摇号卖房新政,隔天就来个百亿地王,大家怎么看?
  3. 一文了解类别型特征的编码方法
  4. 小学数学N合一(洛谷P2433题题解,Java语言描述)
  5. kafka 丢弃数据_Kafka史上最详细原理总结下
  6. 全系统动态污点分析-概要
  7. html样式超出出现滚动条,CSS 设置的高度超出屏幕高度为什么没出现滚动条?
  8. python c/s模式下的内存监控模拟代码
  9. [Python设计模式] 第13章 造小人——建造者模式
  10. 汽车4S店经营状况分析
  11. 使用python正则表达式筛选txt文本并重新写入txt文件
  12. 牛逼,我的单片机固件被人破解了
  13. 苹果手机怎么连接蓝牙耳机_QCY蓝牙耳机 T5在苹果IOS和安卓手机上的延迟对比
  14. 如何配置海康联网网关上级域,通过国标GB28181级联到EasyCVR?
  15. UI5-文档-4.5-Controllers
  16. Python_乌龟绘图
  17. 梯度提升树(GBDT)详解之一:回归举例
  18. 空间权重矩阵与相关性检验(Stata)
  19. 2015小米实习生笔试题1 求两个数的不同位的个数
  20. 基于Arduino的显示测量环境数据设计

热门文章

  1. linux串口卡驱动下载,pci串口卡万能驱动下载_pci串口卡万能驱动1.1 - 系统之家
  2. 计算飞狐交易师股票接口表达公式是什么?
  3. 大型网站系统与Java中间件实践 第二章大型网站及其架构演进过程
  4. 他们守护非洲大象犀牛,马云守护他们 1
  5. 字节序:Big Endian 和 Little Endian
  6. 项目管理如何有效进行?
  7. 分库分表之_分库分表 + 复杂查询
  8. 组织结构的最优化设计
  9. [4G+5G专题-139]: 终端 - 5G终端主要的产品形态 - 智能终端
  10. html画等边三角形,CSS做等边三角形