TIL - 23.03.02

0

TIL

목록 보기
71/126

최종프로젝트 구현 기능들 중 회원가입 기능에서 회원가입에 필요한 이메일 인증 기능 구현 방법

유저가 이메일을 작성 후 인증코드를 요청하면 EmailService에서 6자리 난수를 생성하고 프론트에서 받아온 이메일과 생성된 인증코드를 별도의 테이블을 생성해 저장해두며,
동시에 JavaMailSender를 이용해 유저의 이메일로 메세지와 코드를 함께 전송한다.

유저는 이메일로 받은 코드를 다시 프론트 input box에 입력하며 인증을 하면 다시 받아온 인증코드와 접근한 이메일에 해당하는(DB에 저장되어있는) 인증코드를 비교하여 일치했을 경우에만 회원가입이 가능하다.


하지만 기능 구현 중 고민이었던 점들이
1. 유저가 이메일 인증코드를 요청하면 해당 이메일로 코드가 전송되는데 코드확인을 할 때 어떤 방법으로 '어느 이메일과 일치'하는 코드를 비교할지
2. 이메일 인증을 완료해야만 회원가입이 가능하도록 만드는 방법
3. 코드 인증을 완료한 뒤에 작성되어있는 이메일을 수정하고 회원가입을 막을 수 있는 방법

1번 고민은 생각보다 간단하게 해결할 수 있었다.
인증코드 요청에 사용했던 input box를 코드 인증에서도 똑같이 Request로 인증코드와 함께 받아와서 비교를 했으며 인증이 확인되면 js에 input box를 readOnly 상태로 바꾸어 수정이 안되도록 만들었다.
여기서 3번도 해결할 수 있었고 2번도 회원가입 로직이 시작되는 js function에 if문으로 input box가 readOnly 상태일 때만 회원가입 function이 작동되도록 해서 해결할 수 있었
는 줄 알았는데...

웹페이지 검사-elements에서 input box에 그냥 readOnly를 쑤셔넣어버렸더니 어이없이 뚤려버리고말았다. 하하...

결국 3번 문제는 어차피 백엔드 부분에서 예외처리로 해결하기로 했고 2번 문제는 table에 column을 추가하여 인증 전&후로 관리하는 방법을 선택하기로 하였다.

이 방법에 대한 설명과 결과는 내일 코드를 마저 작성해보고 잘 실행된다면 작성할거당

0개의 댓글