✏️ 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