HyeLog

Spring Boot 이메일 인증 2가지 방법 본문

웹 개발/Spring Boot

Spring Boot 이메일 인증 2가지 방법

shj718 2022. 5. 13. 21:33

❓ 왜 이메일 인증이 필요할까 ❓

회원가입을 할 때 이메일은 대부분 필수적으로 입력한다. 하지만 그 이메일이 123@abc.com 처럼 유효하지 않은 이메일일 수 있다. 따라서, 이메일이 실제로 사용자 소유의 유효한 이메일인지 인증하는 과정이 필요하다.

 

🌟 이메일 인증 방법 🌟

회원가입시 이메일 인증에 대해 알아보자. 이메일 인증은 크게 2가지 방식이 있다.

1. 이메일로 인증 번호를 발송해서 인증 번호를 입력 받는 방식

2. 이메일로 링크를 보내서 해당 링크를 클릭하면 인증이 완료되는 방식

 

2번째 방식에서 링크는 이런 구조이다.

https://bookmoji.site/users/registrationConfirm?token={토큰}

해당 링크를 클릭하면, GET 메소드로 해당 Url의 자원을 요청하게 된다. (참고: https://brunch.co.kr/@sangjinkang/29 )

따라서, Controller에 @GetMapping("[해당 Url]") 어노테이션이 붙은 함수를 구현해 놓아야 한다.

 

이 함수에서는 어떤 일이 일어나야 할까? 우선, DB의 User 테이블에 enabled 칼럼이 있어야 한다. enabled 칼럼의 디폴트값을 0으로 세팅한 후에, 사용자가 이메일의 링크를 클릭하면, 값을 1로 변경해주어야 한다. 이 값이 1이어야 이메일 인증까지 완료한 회원이기 때문에, 로그인 API에서 이 값이 1인 사용자만 로그인할 수 있도록 해야 한다. enabled 칼럼의 타입은 TINYINT(1) 등을 사용할 수 있다.

 

토큰 대신 난수를 생성해도 되지만, 보안상 유일한 값이면 좋다. 토큰 생성은 Java의 UUID를 활용할 수 있다.

 

 

 

(참고: https://www.baeldung.com/registration-verify-user-by-email

https://offbyone.tistory.com/303 )