邮箱发送激活码

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴为您解答SpringBoot注册登录及邮箱发送账号激活代码。以下是一个简单的示例: 首先,您需要编写用户实体类。可以包含id、用户名、电子邮件和密码等字段。 ```java @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NotBlank @Size(max = 20) private String username; @NotBlank @Size(max = 50) @Email private String email; @NotBlank @Size(max = 120) private String password; private boolean enabled; // constructors, getters and setters } ``` 然后,您需要创建一个包含注册、登录和电子邮件验证的控制器。 ```java @RestController @RequestMapping("/api/auth") public class AuthController { @Autowired private AuthenticationManager authenticationManager; @Autowired private UserRepository userRepository; @Autowired private PasswordEncoder passwordEncoder; @Autowired private JwtTokenProvider tokenProvider; @Autowired private EmailSender emailSender; @PostMapping("/signin") public ResponseEntity<?> authenticateUser(@Valid @RequestBody LoginRequest loginRequest) { Authentication authentication = authenticationManager.authenticate( new UsernamePasswordAuthenticationToken( loginRequest.getUsernameOrEmail(), loginRequest.getPassword() ) ); SecurityContextHolder.getContext().setAuthentication(authentication); String jwt = tokenProvider.generateToken(authentication); return ResponseEntity.ok(new JwtAuthenticationResponse(jwt)); } @PostMapping("/signup") public ResponseEntity<?> registerUser(@Valid @RequestBody SignUpRequest signUpRequest) { if(userRepository.existsByUsername(signUpRequest.getUsername())) { return new ResponseEntity(new ApiResponse(false, "Username is already taken!"), HttpStatus.BAD_REQUEST); } if(userRepository.existsByEmail(signUpRequest.getEmail())) { return new ResponseEntity(new ApiResponse(false, "Email Address already in use!"), HttpStatus.BAD_REQUEST); } // Creating user's account User user = new User(signUpRequest.getName(), signUpRequest.getUsername(), signUpRequest.getEmail(), signUpRequest.getPassword()); user.setPassword(passwordEncoder.encode(user.getPassword())); user.setEnabled(false); userRepository.save(user); String emailVerificationToken = tokenProvider.generateEmailVerificationToken(user); String emailVerificationLink = ServletUriComponentsBuilder.fromCurrentContextPath().path("/api/auth/verifyEmail") .queryParam("token", emailVerificationToken).build().toUriString(); emailSender.sendEmailVerification(user.getEmail(), emailVerificationLink); URI location = ServletUriComponentsBuilder .fromCurrentContextPath().path("/users/{username}") .buildAndExpand(user.getUsername()).toUri(); return ResponseEntity.created(location).body(new ApiResponse(true, "User registered successfully")); } @GetMapping("/verifyEmail") public ResponseEntity<?> verifyEmail(@RequestParam("token") String token) { tokenProvider.validateEmailVerificationToken(token); return new ResponseEntity(new ApiResponse(true, "Email verified successfully"), HttpStatus.OK); } } ``` 这里使用了JWT作为身份验证机制,并将邮件验证令牌发送给用户。 最后,您需要编写一个电子邮件发送器。可以使用JavaMailSender或其他电子邮件服务,例如SendGrid或Mailgun。 ```java @Component public class EmailSender { @Autowired private JavaMailSender mailSender; public void sendEmailVerification(String to, String emailVerificationLink) { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom("noreply@example.com"); message.setTo(to); message.setSubject("Activate your account"); message.setText(emailVerificationLink); mailSender.send(message); } } ``` 这就是一个简单的SpringBoot注册登录及电子邮件验证代码示例了。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值