✏️ Project/MatzipWithYou

2. MatzipWithYou Java/Spring.이메일 인증 구현(2) - Redis, JavaMailSender, Thymeleaf, Mybatis

공백오 2025. 3. 12. 17:40
728x90
반응형

✅ Controller("/verify-code")

1️⃣ 코드 로직

✔️ Reids에 저장된 인증코드와 사용자가 입력한 code를 비교하여 일치 여부를 판단

✔️ 반환값이 true이면 인증성공 false이면 실패.

✔️ 인증 성공시 Redis에서 인증코드를 삭제한다.

@PostMapping("/verify-code")
@ResponseBody
public ResponseEntity<Map<String, Object>> verifyAuthCode(@RequestParam String email, @RequestParam String code) {
    // Redis
    boolean isValid = validationEmailService.validateAuthCode(email, code);
    System.out.println("########isValid: " + isValid);

    // 응답을 위한 Map 생성
    Map<String, Object> response = new HashMap<>();
    response.put("success", isValid);  // 인증 성공 여부 추가
    System.out.println("########respose " + response);

    if (isValid) {
        emailAuthService.deleteAuthCode(email);
        System.out.println("인증 성공하셨습니까 : " + isValid);

    }

    return ResponseEntity.ok(response);  // JSON 응답 반환
}

 

 

2️⃣  이메일 인증 코드 검증

✔️ validationEmailService.validateAuthCode(email,code)

✔️ 이메일과 인증코드를 검증하는 서비스 로직을 호출한다

✔️ 일치여부를 판단한다.

✔️ validateAuthCode(String email, String authCode), getAuthCode(String email)

@Override
public boolean validateAuthCode(String email, String authCode) {
    String storedAuthCode = emailAuthService.getAuthCode(email);
    System.out.println("#########storedAuthCode = " + storedAuthCode);
    return storedAuthCode != null && storedAuthCode.equals(authCode);
}
// 인증번호 가져오기
@Override
public String getAuthCode(String email) {
    String result =(String) redisTemplate.opsForValue().get(PREFIX+email);
    System.out.println("############인증번호 가져오기 :" + result);
    return result;
}
  • email에 저장된 authCode 값을 가져와서 저장된 코드와 입력한 값이 같은 지 확인한다.

3️⃣ 인증 성공 시, Redis에서 인증코드를 삭제한다.

// 인증번호 삭제
@Override
public void deleteAuthCode(String email) {
   Boolean result = redisTemplate.delete(PREFIX+email);
    System.out.println("##########인증번호가 삭제 됐나요 ? : " + result);

}

728x90