实现会员注册功能时如何通过qq邮箱获取验证码,从而验证登录? 详细步骤

会员注册_邮箱验证码功能实现:

会员点击登录——>到达会员登录页面——>会员注册账号——>返回登录页面登录。

注册账号:通过邮箱验证码注册

邮箱验证模拟:

  • 准备两个QQ邮箱.

  • 一个QQ发送验证码,一个QQ接受验证码

  • 发送验证码的QQ就相当于QQ邮箱公司,你注册一个账号,公司给你一个验证码后,你注册成功

  • 正在注册为会员的账号:1643137133@qq.com

    (发送方)qq邮箱公司的账号:1689724409@qq.com

前端操作:

点击登录——>跳转到注册页面注册——>邮箱验证——>注册完成后回到登录界面登录

注册时:

  • 判断邮箱有没有被注册过

  • 判断邮箱账号输入格式对不对

  • 向后端提交邮箱账号,获取验证码

    • 点击获取验证码按钮,进入倒计时,1分钟之内按钮处于禁用状态,成功获取验证码后解除禁用
  • 提交表单数据到数据库后保存,注册成功

后端操作:

SpringBoot集成邮件发送验证码:

用一个qq号发送方 模拟 服务端发送验证码

1.导入发送邮件jar包

pom.xml

<!--java发送qq邮件-->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

2.配置

application.yml

#spiring配置
spring:
  mail:
    host: smtp.qq.com
    username: 1689724409 #发送方qq号
    password: lcrijwfdgesjgdji  #授权码  qq邮箱生成的
    default-encoding: utf-8

3.Controller层处理

/*
    会员注册 生成注册的验证码,发给正在注册的邮箱账号
 */
@GetMapping(value = "/createAuthCode")
public CommonResult createAuthCode(String email){
    try {
        //判断邮箱账号时候已经存在
        int  res = memberService.createAuthCode(email);
        if(res==0){
            return new CommonResult("生成成功",200,null);
        }else{
            return new CommonResult("生成失败",500,null);
        }
    }catch (Exception e){
        e.printStackTrace();
        return new CommonResult("生成失败",500,null);
    }
}

4.service层注入、逻辑处理

//邮箱验证注入
@Autowired
private JavaMailSender javaMailSender;

//验证码放在缓存里面
@Autowired
RedisTemplate redisTemplate;
/*
    需要一个QQ号作为发送方,发送验证码,需要在QQ邮箱中做设置
 */
public int createAuthCode(String email) {
    //验证邮箱格式  略  邮箱没有问题,就要发送请求,获取验证码
    //封装邮件信息
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom("1689724409@qq.com");  //发送验证码的qq邮箱,模拟作为公司的服务端
    message.setTo(email);  //就是传过来的emil,正在注册的QQ邮箱账号
    message.setSubject("主题:注册验证码");
    String code = createCode();   //创建验证码
    message.setText(code);        //把创建的验证码set进message中
    mailSender.send(message);     //发送message
    //将验证码存放到redis 5分钟     reids中存放:通过键值对存放,键:emil, 值:code   redis中的验证码和你注册时输入的验证码一比对,正确就注册成功
    redisTemplate.opsForValue().set(email,code,5, TimeUnit.MINUTES);
    return 0;
}
public String createCode(){
    //随机生成6位数字验证码
    Random random = new Random();
    int randomNum = random.nextInt(1000000);//0-999999  000023  456 99898
    String randomCode = String.format("%06d", randomNum);//格式化
    return randomCode;
}

5、测试是否发送验证码

注册的账号:1643137133@qq.com 收到验证码,则发送验证码成功。

  • 看看redis中是否有缓存的验证码
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋大米Pro

感谢小主大赏,留言可进互助群~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值