一、 操作流程

  1. 用户输入手机号,点击发送验证码按钮
  2. 前端将手机号发送给后端
  3. 后端生成一个6位的随机数通过短信发送给用户,之后手机号为key,随机数为value,存入缓存中,最后将短信发送是否成功的结果返回给前端。
  4. 当用户收到短信后,输入验证码,点击登录或者注册。
  5. 前端将手机号与验证码,发送给后端
  6. 后端通过缓存验证用户的验证码是否正确,再将结果返回给前端
  7. 用户的验证码登录流程结束

二、实现流程

  1. 阿里云短信服务

    1. 购买短信服务(以前有100条免费的短信,现在不知道)
    2. 添加签名与模板
      1. 选择左侧的国内消息
      2. 签名管理中选择添加签名(签名就是发送短信时的程序名或公司名)
      3. 模板管理添加模板(也就是发送短信的内容)
    3. 获取自己的阿里云私匙
      1. 左侧点击概览
      2. 选择AccessKey(获得私匙)
    4. 获取发送短信的代码
      1. 选择 OpenAPI(每个框的后面的问号是解释,填完框后将代码粘贴到idea中)
  2. 书写idea里的代码
    1. 添加pom.xml文件
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.4.0</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>1.0.0</version></dependency>
  1. 添加阿里云短信服务(自行修改4处*****位置的值)
package com.example.shop_three.util;
@Component
public class Message {@AutowiredRedisUtils redisUtils;public static void messagePost(String u_phone, String message){DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "***************", "********************");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("RegionId", "cn-hangzhou");request.putQueryParameter("PhoneNumbers",u_phone);request.putQueryParameter("SignName", "********");request.putQueryParameter("TemplateCode", "**********");request.putQueryParameter("TemplateParam", "{\"code\":"+message+"}");try {CommonResponse response = client.getCommonResponse(request);System.out.println(response.getData());} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();}}
}
  1. 服务器布置redis(之前已经安装好redis的,或者本机有reids的跳过本步骤)
    链接: 服务器redis的快速布置
  2. 添加redis工具类
package com.example.huaweiyun.util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;@Component
public class RedisUtils {@Autowiredprivate RedisTemplate<String, String> redisTemplate;/*** 读取缓存** @param key* @return*/public String get(final String key) {return redisTemplate.opsForValue().get(key);}/*** 写入缓存*/public boolean set(final String key, String value) {boolean result = false;try {redisTemplate.opsForValue().set(key, value);result = true;} catch (Exception e) {e.printStackTrace();}return result;}/*** 更新缓存*/public boolean getAndSet(final String key, String value) {boolean result = false;try {redisTemplate.opsForValue().getAndSet(key, value);result = true;} catch (Exception e) {e.printStackTrace();}return result;}/*** 删除缓存*/public boolean delete(final String key) {boolean result = false;try {redisTemplate.delete(key);result = true;} catch (Exception e) {e.printStackTrace();}return result;}
}
  1. application文件添加
spring.redis.host= redis服务器地址
spring.redis.port=6379
spring.redis.password=redis密码
  1. service层代码

    1. 获取验证码
    public String authcode_get(String u_phone) {String authcode = "1"+RandomStringUtils.randomNumeric(5);//生成随机数,我发现生成5位随机数时,如果开头为0,发送的短信只有4位,这里开头加个1,保证短信的正确性redisUtils.set(u_phone,authcode);//将验证码存入缓存Message.messagePost(u_phone,authcode);//发送短息return "发送成功"+authcode);}
     2. 验证码登录
public String authcode_login(String u_phone, String authcode) {if(redisUtils.get(u_phone).equals(authcode)){return "登录成功";}else {return "登录失败";}

三、实现图片

  1. 请求验证码

    2.验证码登录

有问题请评论区留言

springboot项目使用短信验证码的登录注册功能相关推荐

  1. 20、实现短信验证码的登录注册功能

    实现短信验证码的登录注册功能 第一步:查看接口内容 为什么用@RequestBody因为其中我们前端传过来的是json数据那么后端我们就要用@requestBody注解来接收了. 查看写这个实体类 这 ...

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

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

  3. 系统登录页面短信验证码方式登录实现

    近期公司有个需求,要求使用短信验证码登录,取代原来的图片验证码方式,在此记录一下我的实现方法,希望对你有所帮助 公司需求:目前只有账号和验证码方式验证登录,按照公司网络安全统一部署,要求所有公网系统都 ...

  4. [SpringBoot]使用token 短信验证码 Redis的功能实现基本的登陆注册操作(含Redis token 验证码如何配置)

    浅谈对于登录注册业务的思路以及部分代码的实现 近期开始了与移动端项目的开发,由于我个人是后台方面的所以肯定避免不了要实现每个app都应该具有的功能:登录与注册,我一开始写也是感觉非常的没有头绪,所以这 ...

  5. SpringBoot集成阿里云短信服务实现登录注册(超详细)

    本篇博客采用得技术为:springboot + redis + aliyun短信验证 redis我用来做短信校验,首先我们先刨除redis部分做一个发送功能 登录你得阿里云账号 1 -> 控制台 ...

  6. springsecurity自定义短信验证码认证登录流程

    文章目录 前言 验证码存储我们采用redis作为缓存 (注意,这里为了测试方便改为手动设置验证码) 经过上面接口,验证码已经存入到redis中,下面开始认证流程 自定义SmsCodeAuthentic ...

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

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

  8. 发送短信验证码执行登录操作

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

  9. net项目对接java平台_用Java解决项目对接短信验证码难问题:OkHttp和Unirest介绍

    这几个月都在用java 做 一个企业的积分商城 系统, 需要用户用手机号码进行注册登录,所以需要接入一个短信验证码进去. 短信验证码实现流程 1 .构造手机验证码,生成一个 4 位的随机数字串: 2 ...

最新文章

  1. 三层架构中ajax,基于mvc三层架构和ajax技术实现最简单的文件上传
  2. mysql学习资料_一不小心,我就上传了 279674 字的 MySQL 学习资料到 github 上了
  3. react中使用构建缓存_如何在React中构建热图
  4. FPGA之道(66)代码中的约束信息(三)存储器以及寄存器的相关约束
  5. VMware Workstation 8.0安装VMTools时提示找不到GCC的解决办法
  6. 设计模式(2):工厂方法模式(Factory Method Pattern)
  7. 六课时 一课时45分钟表格_今年的“课时”目标是1亿学生
  8. 计算机毕业设计中用Java实现在线考试系统
  9. 架构篇:什么是微服务架构 Spring Cloud?
  10. 【转载】HTML之表单的设计(十)
  11. react 脚手架配置代理
  12. 仿CAD画椭圆弧步骤思路(附加代码)
  13. 适合程序员的英文名字
  14. 专利分析:数字人民币的“双离线”支付问题
  15. IT产业第一定律:摩尔定理
  16. 人民日报:今天,大学培养的人才合格吗?
  17. C#获取汉字首字母,多音拼音
  18. Android ListView点击之后保持更换的背景色,实现已读功能
  19. 服务器不能读取无线网卡,无线网卡无法获得IP地址的解决方案
  20. 计算机视觉的应用,计算机视觉新手指南

热门文章

  1. Python的threading使用(老师和学生的羁绊)
  2. Excel查找函数--Vlookup(多条件匹配)
  3. 电感-温升电流-RMS电流-饱和电流-额定电流
  4. html div淡出,css3 – CSS如何使元素淡入淡出然后淡出?
  5. python sys stdout_关于sys.stdout和print的区别详解
  6. 再见,x 雷!这款 Github 全能下载工具,很强!
  7. EMNLP 2023 征稿通知
  8. 《动手学深度学习》课后习题3
  9. 跨域请求的三种解决方案
  10. Rollup 打包并发布到 npm