springboot项目使用短信验证码的登录注册功能
一、 操作流程
- 用户输入手机号,点击发送验证码按钮
- 前端将手机号发送给后端
- 后端生成一个6位的随机数通过短信发送给用户,之后手机号为key,随机数为value,存入缓存中,最后将短信发送是否成功的结果返回给前端。
- 当用户收到短信后,输入验证码,点击登录或者注册。
- 前端将手机号与验证码,发送给后端
- 后端通过缓存验证用户的验证码是否正确,再将结果返回给前端
- 用户的验证码登录流程结束
二、实现流程
- 阿里云短信服务
- 购买短信服务(以前有100条免费的短信,现在不知道)
- 添加签名与模板
- 选择左侧的国内消息
- 签名管理中选择添加签名(签名就是发送短信时的程序名或公司名)
- 模板管理添加模板(也就是发送短信的内容)
- 选择左侧的国内消息
- 获取自己的阿里云私匙
- 左侧点击概览
- 选择AccessKey(获得私匙)
- 左侧点击概览
- 获取发送短信的代码
- 选择 OpenAPI(每个框的后面的问号是解释,填完框后将代码粘贴到idea中)
- 选择 OpenAPI(每个框的后面的问号是解释,填完框后将代码粘贴到idea中)
- 购买短信服务(以前有100条免费的短信,现在不知道)
- 书写idea里的代码
- 添加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>
- 添加阿里云短信服务(自行修改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();}}
}
- 服务器布置redis(之前已经安装好redis的,或者本机有reids的跳过本步骤)
链接: 服务器redis的快速布置 - 添加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;}
}
- application文件添加
spring.redis.host= redis服务器地址
spring.redis.port=6379
spring.redis.password=redis密码
- service层代码
- 获取验证码
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 "登录失败";}
三、实现图片
- 请求验证码
2.验证码登录
有问题请评论区留言
springboot项目使用短信验证码的登录注册功能相关推荐
- 20、实现短信验证码的登录注册功能
实现短信验证码的登录注册功能 第一步:查看接口内容 为什么用@RequestBody因为其中我们前端传过来的是json数据那么后端我们就要用@requestBody注解来接收了. 查看写这个实体类 这 ...
- 06-发送短信验证码实现登录功能
1.发送短信验证码实现登录功能的流程 1.1.获取验证码流程 1.2.登录流程 1.3.页面带有图形验证码的流程 2. 注册登录二合一页面的开发 2.1.将src目录下的App.vue页面上通用显示的 ...
- 系统登录页面短信验证码方式登录实现
近期公司有个需求,要求使用短信验证码登录,取代原来的图片验证码方式,在此记录一下我的实现方法,希望对你有所帮助 公司需求:目前只有账号和验证码方式验证登录,按照公司网络安全统一部署,要求所有公网系统都 ...
- [SpringBoot]使用token 短信验证码 Redis的功能实现基本的登陆注册操作(含Redis token 验证码如何配置)
浅谈对于登录注册业务的思路以及部分代码的实现 近期开始了与移动端项目的开发,由于我个人是后台方面的所以肯定避免不了要实现每个app都应该具有的功能:登录与注册,我一开始写也是感觉非常的没有头绪,所以这 ...
- SpringBoot集成阿里云短信服务实现登录注册(超详细)
本篇博客采用得技术为:springboot + redis + aliyun短信验证 redis我用来做短信校验,首先我们先刨除redis部分做一个发送功能 登录你得阿里云账号 1 -> 控制台 ...
- springsecurity自定义短信验证码认证登录流程
文章目录 前言 验证码存储我们采用redis作为缓存 (注意,这里为了测试方便改为手动设置验证码) 经过上面接口,验证码已经存入到redis中,下面开始认证流程 自定义SmsCodeAuthentic ...
- Nodejs实现给手机发送短信验证码用于登录功能(免费短信)
我们开发的应用通常需要通过手机短信验证码验证进行登录,方便了那些容易忘记密码的用户,同时也降低了是密码被盗的风险性. 文章目录 1.注册容联云通信账号(免费) 2.nodejs发送请求即可发送短信验证 ...
- 发送短信验证码执行登录操作
短信服务介绍: 目前市场上有很多第三方提供的短信服务,这些第三方短息服务会和各个运营商(移动,联通,电信)对接,我们只需要注册成为会员,并且按照提供的开发文档进行调用就可以完成发送短信,需要说明的是, ...
- net项目对接java平台_用Java解决项目对接短信验证码难问题:OkHttp和Unirest介绍
这几个月都在用java 做 一个企业的积分商城 系统, 需要用户用手机号码进行注册登录,所以需要接入一个短信验证码进去. 短信验证码实现流程 1 .构造手机验证码,生成一个 4 位的随机数字串: 2 ...
最新文章
- 三层架构中ajax,基于mvc三层架构和ajax技术实现最简单的文件上传
- mysql学习资料_一不小心,我就上传了 279674 字的 MySQL 学习资料到 github 上了
- react中使用构建缓存_如何在React中构建热图
- FPGA之道(66)代码中的约束信息(三)存储器以及寄存器的相关约束
- VMware Workstation 8.0安装VMTools时提示找不到GCC的解决办法
- 设计模式(2):工厂方法模式(Factory Method Pattern)
- 六课时 一课时45分钟表格_今年的“课时”目标是1亿学生
- 计算机毕业设计中用Java实现在线考试系统
- 架构篇:什么是微服务架构 Spring Cloud?
- 【转载】HTML之表单的设计(十)
- react 脚手架配置代理
- 仿CAD画椭圆弧步骤思路(附加代码)
- 适合程序员的英文名字
- 专利分析:数字人民币的“双离线”支付问题
- IT产业第一定律:摩尔定理
- 人民日报:今天,大学培养的人才合格吗?
- C#获取汉字首字母,多音拼音
- Android ListView点击之后保持更换的背景色,实现已读功能
- 服务器不能读取无线网卡,无线网卡无法获得IP地址的解决方案
- 计算机视觉的应用,计算机视觉新手指南