Spring boot 使用QQ邮箱进行一个验证登入功能
Spring boot 使用QQ邮箱进行一个验证登入
QQ邮箱开启权限
在QQ邮箱设置->账户里面,往下拉找到这个开启,手机号验证成功后会有一串英文字符串是待会儿要用到的密码。
prom.xml 添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
在application.yml配置文件中对邮箱进行一个配置
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/community?useUnicode=true&characterEncoding=utf8&useSSL=false username: root password: 123456 mail: host: smtp.qq.com username: 自己的qq@qq.com password: 刚刚QQ邮箱那生成的那个字符串,不是邮箱密码 default-encoding: UTF-8 thymeleaf: cache: false
创建发送验证码的请求Controller
使用session存放验证码。后面通过获取得到进行一个验证
package com.example.community.controller; import lombok.extern.slf4j.Slf4j; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import javax.servlet.http.HttpSession; @Slf4j @RestController() @RequestMapping("/mail") @CrossOrigin(origins = {"http://localhost:8090", "null"}) public class MailController { final String from="527734202@qq.com"; @Resource JavaMailSender javaMailSender; @GetMapping("/sendMail") public void sendMail(String email , HttpSession session){ MimeMessage mimeMessage = javaMailSender.createMimeMessage(); try { MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true); // 设置发件人 mimeMessageHelper.setFrom(from); // 设置收件人 mimeMessageHelper.setTo(email); // 设置邮件主题 mimeMessageHelper.setSubject("信息管理验证"); //生成随机数 String random = randomInteger(); //将随机数放置到session中 session.setAttribute("email",email); session.setAttribute("code",random); // 设置验证码的样式 mimeMessageHelper.setText("<font style='color:green'>"+random+"</font>",true); javaMailSender.send(mimeMessage); } catch (MessagingException e) { e.printStackTrace(); } } //生成随机数 public String randomInteger(){ String random = ""; for (int i = 0; i < 6; i++) { random += (int)(Math.random()*10); } return random.toString(); } }
前端通过发送GET请求获取验证码,后台发送给用户邮箱。
注意代码中的细节,一定要使用@Resource
注解,不然就会报错。
注册,登录验证
如果验证码正确,允许用户进行登入和注册。部分代码样例。
@PostMapping("/register") public R register(@RequestBody User user, HttpSession session) { String code1 = (String) session.getAttribute("code"); String email1 = (String) session.getAttribute("email"); if (!email1.equals(user.getEmail())) { return R.error("邮箱错误"); } if (!code1.equals(user.getCode())) { return R.error("验证码错误"); } User user1 = new User(user.getEmail(), user.getPassword()); return service.register(user1); }
是不是很简单
到此这篇关于Spring boot 使用QQ邮箱进行一个验证登入的文章就介绍到这了,更多相关Spring boot验证登入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot+WebSocket实现IM及时通讯的代码示例
项目中碰到需要及时通讯的场景,使用springboot集成websocket,即可实现简单的及时通讯,本文介绍springboot如何集成websocket、IM及时通讯需要哪些模块、开发和部署过程中遇到的问题、以及实现小型IM及时通讯的代码,需要的朋友可以参考下2023-10-10关于ObjectUtils.isEmpty() 和 null 的区别
这篇文章主要介绍了关于ObjectUtils.isEmpty() 和 null 的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-02-02Java List的sort()方法改写compare()实现升序,降序,倒序的案例
这篇文章主要介绍了Java List的sort()方法改写compare()实现升序,降序,倒序的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-03-03
最新评论