1.先申请微信的订阅号,方法看下面的链接

https://blog.csdn.net/weixin_38007185/article/details/108245766?ops_request_misc=&request_id=&biz_id=102&utm_term=%E8%85%BE%E8%AE%AF%E4%BA%91%E7%9F%AD%E4%BF%A1%E6%9C%8D%E5%8A%A1java&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-3-108245766.142v9control,157v4control&spm=1018.2226.3001.4187

https://blog.csdn.net/qq_56233219/article/details/118015291

2.代码修改;

资料给的代码是用的随机数去处理验证码的;

2.1js和html部分添加代码


3.controller部分代码修改

我使用的短信发送的工具类(复制的我上面链接的博客中的)

/*** 短信发送工具类*/
public class SMSUtils {public static String sendSMS(String phoneNumber,String code) {String reStr = ""; //定义返回值// 短信应用SDK AppID   // 1400开头int appid = XXXXX;// 短信应用SDK AppKeyString appkey = "XXXX";// 短信模板ID,需要在短信应用中申请int templateId = XXXX ;// 签名,使用的是`签名内容`,而不是`签名ID`String smsSign = "XXX";try {//参数,一定要对应短信模板中的参数顺序和个数,String[] params = {code};//创建ssender对象SmsSingleSender ssender = new SmsSingleSender(appid, appkey);//发送SmsSingleSenderResult result = ssender.sendWithParam("86", phoneNumber,templateId, params, smsSign, "", "");// 签名参数未提供或者为空时,会使用默认签名发送短信System.out.println(result.toString());if(result.result==0){reStr = "success";}else{reStr = "error";}} catch (HTTPException e) {// HTTP响应码错误e.printStackTrace();} catch (JSONException e) {// json解析错误e.printStackTrace();} catch (IOException e) {// 网络IO错误e.printStackTrace();}catch (Exception e) {// 网络IO错误e.printStackTrace();}return reStr;}}

上图中的签名内容:

4.发送验证码的controller方法

package com.example.reggie_take_out.controller;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.reggie_take_out.common.R;
import com.example.reggie_take_out.entity.User;
import com.example.reggie_take_out.service.UserService;
import com.example.reggie_take_out.utils.SMSUtils;
import com.example.reggie_take_out.utils.ValidateCodeUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpSession;
import java.util.Map;/*** @Description: TODO* @author: Pexo* @date:2022/5/1 11:08*/
@RestController
@Slf4j
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;/*** 发送手机短信验证码* @param map* @return*/@PostMapping("/sendMsg")public R<String> sendMsg(HttpSession session,@RequestBody Map map){//获取手机号String phone = map.get("phone").toString();if(StringUtils.isNotEmpty(phone)){//生成随机的4位验证码String code = ValidateCodeUtils.generateValidateCode(4).toString();log.info("code={}",code);//调用阿里云提供的短信服务API完成发送短信SMSUtils.sendSMS("填入电话号码",code);//需要将生成的验证码保存到Sessionsession.setAttribute("code",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("code");//进行验证码的比对(页面提交的验证码和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. java短信验证码功能发送的验证码如何校验_java 实现发送短信验证码功能

    原标题:java 实现发送短信验证码功能 如何使用java + maven的项目环境发送短信验证码,本文使用的是榛子云短信 的接口. 1. 安装sdk 下载地址: http://smsow.zhenz ...

  2. java短信验证码功能发送的验证码如何校验_Java实现发送短信验证码功能

    一个发送短信验证码的功能,使用的是信易通的短信平台接口,然后在Java中使用HttpClient模拟POST请求或者GET请求(看短信平台要求,一般的情况下都是POST请求),调用短信平台提供的接口( ...

  3. Java用户注册服务器发送短信验证码功能实现

    <–start–> 当客户端发送了http的请求给服务器之后,服务器获取手机号然后调用短信平台给该手机号发送短信验证码. 给服务器发送请求的js代码: <script type=&q ...

  4. SpringBoot+阿里云短信服务实现发送短信验证码功能

    目录 一.登陆阿里云,开通短信服务(收费的,需要充值,1元能发20条左右),并获取AccessKeyId和AccessKeySecret 二.创建短信模板与签名 三.引入依赖 四.准备工作已完成,编码 ...

  5. java + maven 实现发送短信验证码功能

    如何使用java + maven的项目环境发送短信验证码,本文使用的是榛子云短信 的接口. 1. 安装sdk 下载地址: http://smsow.zhenzikj.com/doc/sdk.html ...

  6. php榛子云短信验证,java + maven +榛子云短信 实现发送短信验证码功能

    如何使用java + maven的项目环境发送短信验证码,本文使用的是榛子云短信的接口. 下载下来是jar文件,需要将jar发布到本地的maven仓库中, 在cmd环境下输入: mvn install ...

  7. php注册榛子云短信验证,java + maven +榛子云短信 实现发送短信验证码功能

    如何使用java + maven的项目环境发送短信验证码,本文使用的是榛子云短信的接口. 下载下来是jar文件,需要将jar发布到本地的maven仓库中, 在cmd环境下输入: mvn install ...

  8. PHP实现短信宝发送短信验证码功能

    短信验证码是随机生成的几位数字,将此数字保存到数据库中,发送短信时将该数字 取出来放到下面代码填写短信内容处,即可发送. 注意要发送的手机号,短信宝账号.密码,短信发送内容等都要提前存放到数据库中,下 ...

  9. Java演示手机发送短信验证码功能实现

    我们这里采用阿里大于的短信API 第一步:登陆阿里大于,下载阿里大于的SDK a.在阿里大于上创建自己的应用 b.点击配置管理中的验证码,先添加签名,再配置短信模板 第二步:解压相关SDK,第一个为j ...

最新文章

  1. 【图像】直方图均衡化
  2. cmake / target_** 中的 PUBLIC,PRIVATE,INTERFACE
  3. Java程序员需要掌握的计算机底层知识(三):进程、线程、纤程、中断
  4. Android shape的使用(圆角矩形)
  5. cesium获取模型高度_Cesium中地形数据的加载
  6. (38)FPGA面试题Verilog设计计数器
  7. Exchange 2003 升级 2010地址列表升级
  8. 作为一个程序员必备的素质
  9. 小试牛刀——搭建一个周报管理系统
  10. 优酷下载的会员独享KUX视频格式怎么转换成MP4
  11. linux系统重新获取ip,Linux DHCP 重新获取指定的IP地址
  12. 站在知乎肩上-做更强的自己(4)
  13. 怎么做应力应变曲线_如何用Origin画应力应变曲线 - 图文 -
  14. Outlook打不开的问题
  15. 哈希函数(hash函数)
  16. “网上世博会”带来创新体验,水晶石着力推动“数字展览”应用
  17. ASP.NET Core 认证与授权[3]:OAuth OpenID Connect认证
  18. 【渗透测试】锐捷网络-EWEB网管系统易网关批量GetShell
  19. 程序员的写作课:四、我们如何管理素材
  20. 宝宝咳嗽时的8大禁忌

热门文章

  1. poj1061 青蛙的约会(扩展欧几里德)
  2. 1734: 炮兵阵地
  3. amd显卡Linux闪屏,Mac 被曝运行 Win10 闪屏 苹果:可更新AMD显卡驱动、调整分辨率...
  4. vue 项目中使用three.js实现vr360度全景图片预览
  5. 说说铁道部12306
  6. SpringBoot实现小程序微信支付统一下单
  7. gradle初始化失败:Errors occurred while build effective model from
  8. 音乐播放器中期总结(类似于qq音乐的歌词显示)
  9. 鸿蒙OS屏幕适配UI设计图解决方案
  10. 一 企业信息化战略和实施