Java前后端分离项目(二)手机验证码实现

一.实现思路

1.前端发请求接收短信验证码,为防止程序恶意请求,先做图形验证码校验。
参数:手机号,redis中图片验证码key,用户输入的图片验证码的值
2.拿出图片验证码,校验图片验证码
3.获取上一次的短信验证码发送记录,区分存在存在与否,沿用或者生成新的手机验证码
4.保存手机验证码到redis
key:业务键+phone
value(时间 , 验证码 -> DTO)
5.调用短信网关发送
6.为方便管理,存储发送记录到数据库
获取IP:RequestContextHolder

二.具体实现

1.生成dtol类保存前端用于短信验证的请求参数

@Data
public class SendSMSParm {
   
    @NotNull(message = "不能为空")
    private String mobile;
    @NotNull(message = "不能为空")
    private String imageCode;
    @NotNull(message = "系统异常,请稍后重试")
    private String imageCodeKey;
}

2.实现调用接口

/**
* 手机验证码
*/
@PostMapping(value="/sendSmsCode")
public JSONResult sendSmsCode(@RequestBody @Validated SendSMSParm parm){
   
    verifycodeService.sendSmsCode(parm);
    return JSONResult.success();
}

3.具体实现

为防止网络延迟带来的短信接收问题,短信验证码在过期时间类沿用之前的验证码,并更新过期时间


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值