交友项目【手机号验证码发送】功能实现

目录

1:注册登录需求分析

1.1:业务说明

1.2:需求分析

1.3:数据库表

1.4:实体类

2:发送短信验证码

2.1:登录验证码

2.2:接口说明

2.3:流程分析

2.4:代码实现

2.4.1:mock接口

2.4.2:UserController

2.4.3:UserService

2.4.4:配置文件

2.4.5:启动类


1:注册登录需求分析

1.1:业务说明

业务:

  1. 用户通过手机验证码进行登录

     

    2.如果是第一次登录则需要完善个人信息,在上传图片时,需要对上传的图片做人像的校验,防止用户上传非人像的图片作为头像。流程完成后,则登录成功。  

  • 已注册用户:

    • 输入手机号发送验证码

    • 输入验证码,进行比对完成登录

  • 未注册用户:

    • 输入手机号发送验证码

    • 输入验证码,进行比对,自动注册(保存用户)

    • 完善用户信息

 

1.2:需求分析

服务端接受客户端请求

Java代码调用第三方服务实现短信返送(发送短信需要运营资质,只能借助第三方实现)

 

1.3:数据库表

数据库使用的mysql:

CREATE TABLE `tb_user` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`mobile` varchar(11) DEFAULT NULL COMMENT '手机号',`password` varchar(32) DEFAULT NULL COMMENT '密码,需要加密',`created` datetime DEFAULT NULL,`updated` datetime DEFAULT NULL,`hx_user` datetime DEFAULT NULL,`hx_password` datetime DEFAULT NULL,    PRIMARY KEY (`id`),KEY `mobile` (`mobile`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户表';

1.4:实体类

package com.czxy.tanhua.entity;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;import java.util.Date;/*** <p>* 用户表* </p>** @author 爱吃豆的土豆* @since 2023-03-29*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("tb_user")
public class User extends BasePojo {private static final long serialVersionUID = 1L;@TableId(value = "id", type = IdType.AUTO)private Long id;/*** 手机号*/@TableField("mobile")private String mobile;/*** 密码,需要加密*/@TableField("password")private String password;@TableField("created")private Date created;@TableField("updated")private Date updated;@TableField("hx_user")private String hxUser;@TableField("hx_password")private String hxPassword;}

 

2:发送短信验证码

2.1:登录验证码

服务端接收客户端请求

Java代码调用第三方服务实现短信返送(发送短信需要运营资质,只能借助第三方实现)

 

2.2:接口说明

参见YAPI接口地址:http://192.168.136.160:3000/project/19/interface/api/94  

2.3:流程分析

客户端发送请求

服务端调用第三方组件发送验证码

验证码发送成功,存入redis

响应客户端,客户端跳转到输入验证码页面

 

2.4:代码实现

2.4.1:mock接口

地址:http://192.168.136.160:3000/project/19/interface/api/94

 

2.4.2:UserController

tanhua-app-server 工程编写com.tanhua.server.controller.UserController#login

 

@RestController
@RequestMapping("/user")
public class LoginController {@Resourceprivate UserService userService;@PostMapping("/login")public ResponseEntity loginUser(@RequestBody Map map){String phone = (String) map.get("phone");userService.loginUser(phone);return ResponseEntity.ok(null);}
}

2.4.3:UserService

tanhua-app-server 工程编写 com.tanhua.server.service.UserService#sendCode

 

package com.czxy.tanhua.service;import com.czxy.tanhua.autoconfig.template.SmsTemplate;
import com.czxy.tanhua.commons.utils.JwtUtils;
import com.czxy.tanhua.dubbo.api.UserApi;
import com.czxy.tanhua.entity.User;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.time.Duration;
import java.util.HashMap;
import java.util.Map;/*** @Author 爱吃豆的土豆、* @Date 2023/3/30 9:55*/
@Service
public class UserService {@Resourceprivate SmsTemplate smsTemplate;@Resourceprivate StringRedisTemplate stringRedisTemplate;@DubboReferenceprivate UserApi userApi;/*** 登录用户的验证码* @param phone*/public void loginUser(String phone) {//随机生成验证码String code = RandomStringUtils.randomNumeric(6);//调用短信工具类smsTemplate.sendSms(phone,"",code);String key = "CHECK_CODE"+phone;//存放到redis中stringRedisTemplate.opsForValue().set(key,code,Duration.ofMinutes(5));}}

2.4.4:配置文件

tanhua-app-server 端添加配置文件application.yml

配置文件中包含短信一些配置信息,服务启动进行加载

#服务端口
server:port: 18080
spring:servlet:multipart:max-file-size: 30MBmax-request-size: 30MBapplication:name: tanhua-app-serverredis:  #redis配置host: localhostport: 6379rabbitmq:host: 192.168.136.160port: 5672username: guestpassword: guestcloud:  #nacos配置nacos:discovery:#        server-addr: localhost:8848server-addr: 192.168.136.160:8848config:                               # TODO 配置中心?server-addr: 192.168.136.160:8848
dubbo:    #dubbo配置protocol:name: dubboport: 20880registry:address: spring-cloud://localhostconsumer:check: falseretries: 0application:logger: slf4jcloud:subscribed-services: tanhua-dubbo-db, tanhua-dubbo-mongo
tanhua:sms:signName: 桐叔老司机templateCode: SMS_130929218accessKey: LTAI5tR6UTNzPK1F6CQoqF3Xsecret: REp7cA2pjU30skfqxGym4CkKDbtatJoss:pathProtocol: httpsendpoint: oss-cn-shanghai.aliyuncs.comkeyId: LTAI5t6JCKtfe8wXcXZjpbcVkeySecret: jnbVNSsW50CJnAWfBkXDiUorLFnRajbucketName: tudou-01dirName: avataraip:appId: 26974300apiKey: LgQEvULCyS5nkMWMfp7OfbzlsecretKey: zVNfzu9GZYwX8lfASYEaumYU7dTqVKKihuanxin:appkey: 1181230208170312#tanhuaclientId: YXA6cg-t55-3QPeMhKZWPtKXMAclientSecret: YXA6nMnWCIb3X9ANZXQQ0CoWPUtlaLEdefault:recommend:users: 2,3,8,10,18,20,24,29,27,32,36,37,56,64,75,88green:enable: trueaccessKeyID: LTAI4GKgob9vZ53k2SZdyAC7accessKeySecret: LHLBvXmILRoyw0niRSBuXBZewQ30lascenes: porn,terrorism #色情,暴力
# 分布式文件系统FDFS配置
fdfs:so-timeout: 1500connect-timeout: 600#缩略图生成参数thumb-image:width: 150height: 150#TrackerList参数,支持多个tracker-list: 192.168.136.160:22122web-server-url: http://192.168.136.160:8888/

2.4.5:启动类

 

/*** @Author 爱吃豆的土豆、* @Date 2023/3/29 11:42*/
@SpringBootApplication
@ServletComponentScan   // 开启servlet组件扫描(过滤器扫描)
public class AppServiceApplication {public static void main(String[] args) {SpringApplication.run(AppServiceApplication.class,args);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/63308.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费的短信验证码接口

免费的短信验证码接口 改了唯ID的东西&#xff0c;大家可以用来玩玩&#xff0c;该服务明年6月到期&#xff0c;也希望大家能文明使用&#xff01; 不说废话了&#xff0c;直接上接口。 1、发送短信验证码接口 POST http://sms.usts.top/sms/sendCode?phone手机号2、…

短信验证码平台有哪些比较好用?

现如今&#xff0c;要想分辨短信验证码平台哪些比较好用&#xff0c;需要从速度、到达率、稳定性等几个方面来决定。短信验证码平台是很讲究时效性&#xff0c;所以速度快、到达率高是很关键的。另外&#xff0c;在选择短信验证码平台的时候&#xff0c;还要注意短信发送、接收…

短信验证码的实现

需求 发送验证码短信然后接收验证码再完成注册 具体操作 1>点击"获取验证码"的按钮,会发送sendVerifyCode的异步请求并带上参数phone(number) 查看前端代码html 查看对应的js代码 2>后端接口的实现 接口接收请求,获取到手机号,生成验证码code,拼接出短信,并…

目前可以用的短信验证码平台哪个比较好?

目前短信验证码大家应该都很熟悉了&#xff0c;尤其当你在一些购物网站等注册会员或者修改信息时都需要验证码。而短信验证码是商家为了降低重复注册或者非法注册&#xff0c;就需要短信验证码来帮忙用户的真实性。那么&#xff0c;目前可以用的短信验证码平台哪个比较好呢&…

短信验证码登录的实现

原理说明开发环境具体实现过程 原理说明 在网站登录时经常会遇到短信验证码登录的情况&#xff0c;其原理如下&#xff1a;首先我们需要一个短信发送接口&#xff0c;前端发送手机号码到后端&#xff0c;后端随机生成一个验证码并存入redis,并且设置该key的过期时间。(这里可以…

低代码真的是“行业毒瘤”?

低代码/零代码到底是“行业毒瘤”还是“大势所趋”&#xff1f;碰瓷“码农”万年户&#xff0c;低代码火了这些年&#xff0c;你还觉得是毒瘤吗&#xff1f; 低代码/零代码作为比较有争议的话题&#xff0c;常年被拿来碰瓷码农&#xff0c;也是很多行业大佬关注的对象。 阿里云…

chatgpt赋能python:Python如何下载人人文库

Python如何下载人人文库 人人文库是一个知识分享社区&#xff0c;用户可以在平台上上传、下载和分享文档。 Python是一种强大的编程语言&#xff0c;具有强大的网络和数据处理库。今天&#xff0c;我们将介绍如何使用Python来下载人人文库中的文档。 首先&#xff0c;我们需…

秘密共享差分隐私原理解析

1. 隐私计算全貌 &#xfffc;&#xfffc; 可以看到&#xff0c;隐私计算技术从1979年就开始了&#xff0c;历经四代从安全多方计算(MPC)、到差分隐私(DP)、到集中加密技术(TEE)&#xff0c;再到联邦学习(FL)。 2. 秘密共享 secret Sharing 就是“秘密分享”或者“秘密共享”…

保护个人隐私和数据安全的方法与策略

引言 随着信息技术的普及和发展&#xff0c;我们享受到了便捷的互联网服务&#xff0c;但与此同时&#xff0c;个人隐私和数据安全问题也日益受到威胁。在这个所谓的"裸奔"时代&#xff0c;网络攻击、数据泄露和隐私侵犯已经成为常态。然而&#xff0c;我们并不无助…

商业秘密安全保护

新项目涉及商密&#xff08;商业秘密的密级&#xff1a;非商密、普通商密、核心商密&#xff09;&#xff0c;以下是对商密安全保护规则的调研。 《中央企业商业秘密安全保护技术指引》&#xff08;保密[2015]3号&#xff09;《中央企业商业秘密安全技术保护实施指南》&#x…

华为ensp练习题

首先子网划分如下图&#xff1a; 然后配路由ip&#xff0c;创建路由接口对路由器R1-R4每个都要配两个环回地址&#xff0c;R5配一个环回地址&#xff1a; interface LoopBack ? 然后配静态路由&#xff1a;也是ip route-static 然后配缺省路由&#xff1a;也是ip route-stat…

python绘图-matplotlib应用笔记

目录 figure/axis/axes/plt分别表示什么&#xff1f;pltFigure:可以解释为画布。Axes 是图像中具有数据空间的区域Axis 坐标轴总结 图像元素说明中文解决问题绘图实例 图像坐标轴调整 参考文章 figure/axis/axes/plt分别表示什么&#xff1f; matplot绘图的基础就是由上述图片中…

Python绘图(模板)

目录 2D绘图 折线图 条形图 直方图 散点图 饼图 堆积条形图 ​编辑 对称条形图 3D绘图 3D散点图 3D条形图 附录&#xff1a; 颜色表color 图标marker" " 固定代码模版 2D绘图 折线图 import matplotlib.pyplot as plt #上一行代码也可替换为 i…

【Android】自定义View、画家(画布)Canvas与画笔Paint的应用——画图、涂鸦板app的实现

利用一个简单的画图app来说明安卓的图形处理类与自定义View的应用。 如下图&#xff0c;有一个供用户自己任意画图、涂鸦的app&#xff0c; 这里不做那么花俏了&#xff0c;仅提供黑白两色&#xff0c;但可以改变笔尖的粗细。 实质上这里的橡皮擦就是白色的画笔&#xff0c;根…

Python画图matplotlib库的使用scatter(),plot()方法教学实例

Python画图主要用到matplotlib这个库。scatter和 plot 函数最常用 这个函数几乎可以调节图的一切属性&#xff0c;包括但不限于&#xff1a;坐标范围&#xff0c;axes标签字号大小&#xff0c;xtick,ytick标签字号&#xff0c;图线宽&#xff0c;legend字号等。 具体参数参看官…

绘图神器draw.io(写文必备)

绘图神器draw.io&#xff08;写文必备&#xff09; 前言 大家早上好&#xff0c;我是毛小悠&#xff0c;一个前端开发工程师。 最近发现一个绘图神器&#xff0c;没错&#xff0c;就是标题中的draw.io。免费、开源&#xff0c;功能强大&#xff0c;真的非常适合程序员。 我…

基于Attention的机器翻译模型,论文笔记

论文题目&#xff1a;Neural Machine Translation by Jointly Learning to Align and Translate 论文地址&#xff1a;http://pdfs.semanticscholar.org/071b/16f25117fb6133480c6259227d54fc2a5ea0.pdf GIF来源&#xff1a;https://jalammar.github.io/visualizing-neural-m…

Transformer(四)--实现验证:transformer 机器翻译实践

转载请注明出处&#xff1a;https://blog.csdn.net/nocml/article/details/125711025 本系列传送门&#xff1a; Transformer(一)–论文翻译&#xff1a;Attention Is All You Need 中文版 Transformer(二)–论文理解&#xff1a;transformer 结构详解 Transformer(三)–论文实…

机器翻译之Facebook的CNN与Google的Attention

传统的seq2seqfacebook的cnn 结构特点 position embedding卷积的引入GLU控制信息的流动attention google的attention 结构特点 KVQ的思维架构multi-head attentionattention的多种应用 参考资料 机器翻译的常用架构是seq2seq&#xff0c;可是seq2seq中的核心模型RNN是序列模型…

探索机器翻译:从统计机器翻译到神经机器翻译

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…