在Spring Boot中实现登录邮箱验证,你可以使用JavaMailSender来发送验证邮件。以下是一个简化的例子:
- 添加依赖到你的
pom.xml
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
- 配置你的邮箱信息在
application.properties
或application.yml
:
spring.mail.host=smtp.example.com
spring.mail.port=587
spring.mail.username=your_username
spring.mail.password=your_password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
- 创建一个服务来发送验证邮件:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.stereotype.Service;
@Service
public class EmailService {
@Autowired
private JavaMailSender mailSender;
public void sendEmail(String to, String subject, String text) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(to);
message.setSubject(subject);
message.setText(text);
mailSender.send(message);
}
}
- 在登录逻辑中使用
EmailService
发送邮件:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
public class LoginController {
@Autowired
private EmailService emailService;
@PostMapping("/login")
public String login(@RequestParam String email) {
// 生成一个验证token
String token = generateToken();
// 发送包含token的邮件
emailService.sendEmail(email, "登录验证", "你的验证码是: " + token);
// 在这里将token与用户信息关联起来,存储在会话或数据库中
// ...
return "邮件已发送,请查收";
}
private String generateToken() {
// 实现token生成逻辑
return "your_generated_token";
}
}
确保替换spring.mail.*
配置中的smtp.example.com
, your_username
, 和 your_password
为你的实际邮件服务器信息。同时,generateToken()
方法应该生成一个唯一的验证token,并且应该与用户信息存储在一起,以便用户请求验证时验证token。