java使用邮箱验证码登陆的后端业务代码
以下是Java使用邮箱验证码登陆的后端业务代码的示例:
- 引入相关的库和模块
import java.util.Random;
import javax.mail.*;
import javax.mail.internet.*;
- 定义发送邮件的函数
public static void sendEmail(String toEmail, String code) {
String from = "发件人邮箱";
String password = "发件人邮箱密码";
String host = "smtp.发件人邮箱后缀";
Properties properties = System.getProperties();
properties.setProperty("mail.smtp.host", host);
properties.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(properties, new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(from, password);
}
});
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));
message.setSubject("验证码");
message.setText("您的验证码为:" + code);
Transport.send(message);
} catch (MessagingException mex) {
mex.printStackTrace();
}
}
- 生成随机验证码的函数
public static String generateCode() {
String code = "";
Random random = new Random();
for (int i = 0; i < 6; i++) {
code += random.nextInt(10);
}
return code;
}
- 编写控制器
@PostMapping("/login")
public String login(@RequestParam("email") String email, @RequestParam("code") String code) {
if (email == null || email.trim().isEmpty()) {
return "邮箱不能为空";
}
if (code == null || code.trim().isEmpty()) {
return "验证码不能为空";
}
// 比较验证码是否正确
if (code.equals(codeMap.get(email))) {
// 验证码正确,登录成功
// TODO: 登录成功后的业务逻辑
return "登录成功";
} else {
// 验证码错误,登录失败
return "验证码错误";
}
}
@PostMapping("/sendCode")
public String sendCode(@RequestParam("email") String email) {
if (email == null || email.trim().isEmpty()) {
return "邮箱不能为空";
}
// 生成验证码
String code = generateCode();
// 发送邮件
sendEmail(email, code);
// 把验证码保存到Map中
codeMap.put(email, code);
return "验证码已发送,请注意查收";
}
- 定义存储验证码的Map
private static Map<String, String> codeMap = new HashMap<>();
说明:
以上是Java使用邮箱验证码登陆的后端业务代码的示例,其中包括了发送邮件、生成随机验证码、控制器等功能。具体业务逻辑根据实际情况进行调整。
原文地址: https://www.cveoy.top/t/topic/bqZW 著作权归作者所有。请勿转载和采集!