Spring boot验证登入
万伏小太阳 人气:0Spring 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); }
是不是很简单
加载全部内容