커리큘럼
home
React
home

로그인 / 회원가입

Created
2025/02/03 06:10
Tags

회원가입 기능 (일반 / 구글)

회원가입 기능은 일반 회원가입과 구글 계정을 이용한 간편 회원가입을 지원합니다. 사용자는 회원 정보를 입력한 후 휴대폰 인증을 거쳐 회원가입을 완료할 수 있습니다.
휴대폰 인증 (SOLAPI): 회원 정보 입력 후, SOLAPI를 통해 휴대폰 인증을 거칩니다. 인증이 완료되면 회원가입이 완료됩니다.
구글 로그인 연동: 구글 로그인 시, 사용자가 처음 로그인하는 경우 회원가입 창으로 넘어가며, 이후 일반 회원가입 절차를 진행합니다.

로그인 기능 (일반 / 구글)

로그인 기능은 일반 로그인과 구글 로그인을 지원합니다. 사용자는 로그인 정보를 입력하고, 로그인을 클릭하여 메인 페이지로 이동할 수 있습니다.
일반 로그인: 사용자 정보 입력 후 로그인 버튼을 클릭하면 로그인 절차가 완료됩니다.
구글 로그인: 구글 로그인 버튼을 클릭하면, 구글 로그인 창으로 넘어가서 로그인이 완료된 후 메인 페이지로 이동합니다.
회원가입 및 로그인 기능 구현 과정에서의 트러블슈팅 사례

구글 로그인 시 기존 계정과 중복 문제

문제 : 구글 로그인을 통해 회원가입을 시도할 때, 기존에 같은 이메일로 가입된 계정이 이미 존재하는 경우, 가입을 진행할 수 없는 문제.
해결 :
이메일 중복 체크 로직 추가
구글 로그인 시, 사용자의 이메일을 데이터베이스에서 검색하여, 이미 존재하는 경우 중복 계정이 생성되지 않도록 로직을 추가 했습니다.
기존 계정 연결
만약 기존에 동일한 이메일로 가입된 계정이 있는 경우, 그계정과 구글 계정을 연동하여 기존계정으로 로그인할 수 있도록 개선했습니다.

추가 구현 사항 :

기존 계정을 구글 계정과 연동하기 전에, 해당 이메일로 추가 인증을 수행합니다 실제로 해당 이메일 계정의 소유자인지를 확인할 수 있습니다.
구현 방법 :
구글 로그인을 시도할 때, 사용자가 기존 계정과 동일한 이메일을 사용한 경우, 해당 이메일로 인증 코드를 전송합니다.
사용자는 이메일로 받은 인증 코드를 입력하여 계정 연동을 승인합니다.
문제: 로그인 시 보안 문제
로그인 실패 횟수에 대한 제한이 현재 존재하지 않으며 동일한 기기에서 반복적으로 로그인 시도를 하여 보안에 위협이 될 수 있는 상황이 발생할 수 있을 것으로 예상됨.
구현 방안 :
동일 IP에서 일정 횟수 이상 로그인 시도가 실패하면, 해당 IP에서의 추가 로그인 시도를 일정 시간 동안 차단하는 기능을 추가 할수있습니다.
일정횟수 이상 실패한 경우, 사용자의 이메일로 알림을 보내고, 추가적인 인증절차(CAPTCHA) 를 사용하여 신원을 확인할수있습니다.

문제 1: 검색 결과의 정확도와 성능 최적화

문제 설명

Elastic Search를 사용하여 검색을 수행할 때, 검색 결과가 예상보다 많은 결과를 반환하거나, 반대로 원하는 결과가 충분히 반영되지 않는 문제가 발생했습니다. 특히, fuzziness, minimum_should_match와 같은 파라미터들이 제대로 튜닝되지 않았을 때 이러한 문제가 두드러졌습니다.

해결 과정

1.
Minimum Should Match 조정:
검색 결과의 유연성을 높이기 위해 minimum_should_match 값을 조정했습니다. 이를 통해 조금 더 넓은 범위의 검색 결과를 얻을 수 있었습니다.
2.
Fuzziness 튜닝:
fuzziness 값을 2로 설정하여, 사용자가 오타를 입력하거나 철자가 약간 다른 경우에도 유연하게 검색 결과를 제공할 수 있도록 했습니다. 그러나 fuzziness를 너무 높게 설정하면 너무 많은 결과가 반환되는 문제가 발생할 수 있어, 적절한 값을 찾기 위해 반복적인 테스트를 진행했습니다.
3.
필드 가중치 조정:
검색의 우선순위를 개선하기 위해 title, teacher, description 필드에 가중치를 부여했습니다. 초기에는 title 필드에 높은 가중치(^3)를 주고, description 필드에는 상대적으로 낮은 가중치(^1)를 설정했습니다. 그러나 실제 검색 결과를 분석한 결과, description 필드가 검색에서 더 중요한 역할을 해야 한다는 것을 발견했고, 가중치를 ^2로 조정하여 더 정확한 검색 결과를 도출할 수 있었습니다.

문제 2: 검색어 오타 처리 및 유사어 검색

문제 설명

사용자가 검색어를 입력할 때 오타가 발생하거나 유사한 단어를 사용할 경우, 검색 결과가 제대로 나오지 않는 문제가 있었습니다. 예를 들어, "은퇴"를 "은타"로 잘못 입력했을 때 검색 결과가 전혀 반환되지 않는 상황이 발생했습니다.

해결 과정

1.
Fuzziness 설정:
오타가 포함된 검색어에 대해 유사한 결과를 반환할 수 있도록 fuzziness를 2로 설정했습니다. 이 설정을 통해 사용자 입력의 작은 오류에도 불구하고 원하는 결과를 얻을 수 있었습니다.
2.
Prefix Length 제한:
fuzziness를 높게 설정하면 너무 많은 오타를 허용하게 되어 검색 결과의 정확도가 떨어질 수 있습니다. 이를 보완하기 위해 prefix_length를 1로 설정하여, 검색어의 처음 몇 글자가 정확히 일치해야만 결과가 반환되도록 제한을 두었습니다. 이를 통해 검색 정확도를 유지하면서도 유연한 검색 결과를 제공할 수 있었습니다.