클라이언트 측 비밀번호 확인 로직 도입 (Zod refine 활용) #225
sgoldenbird
started this conversation in
UX Improvement
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
🎯 개선 목표 (What needs improvement?)
기존에 서버에서 담당하도록 설계되었던 회원가입 시 비밀번호 일치 여부 검증 로직을 클라이언트 측(프론트엔드)에서 처리하도록 변경하여 사용자 경험을 개선하고 서버 부하를 줄이는 것을 목표로 합니다. 이를 위해 Zod 라이브러리의
refine메서드를 활용하여 스키마 기반 유효성 검사를 적용합니다.🧭 사용자 시나리오 (User scenario)
기존 시나리오:
개선된 시나리오:
onBlur), 비밀번호와 비밀번호 확인 필드의 값이 일치하는지 클라이언트에서 즉시 검사합니다.🔍 문제의 원인
기존 설계에서 비밀번호 일치 검사를 서버에 의존함으로써 다음과 같은 문제가 발생했습니다:
💡 개선 제안 (Suggested solution)
Zod의
refine메서드를 활용하여 회원가입 스키마에 비밀번호와 비밀번호 확인 필드의 일치 여부를 검사하는 로직을 추가했습니다.이 로직은 폼 제출 전 클라이언트 측에서 실행되어, 즉각적인 유효성 검사 피드백을 제공하고 서버 통신을 최적화합니다.
🛠 구현 구조 요약 (How it was implemented)
사용자가 입력한 비밀번호(password)와 비밀번호 확인(passwordConfirm)이 일치하는지 프론트엔드에서 유효성 검사하고 서버로 데이터를 전송할 때는 passwordConfirm 필드를 제외하고 전송
1. Zod 스키마 정의 (
src/domain/Auth/schemas/request.ts):기본 스키마 (baseSignupRequestSchema)
refine 추가 (signupRequestSchema)
refine()메서드를 사용하여 password와 passwordConfirm 값의 일치 여부를 검사2. 타입 추론 및 구분:
3. 폼 컴포넌트 통합 (/src/domain/Auth/components/SignUpForm.tsx):
register()적용전체 관련 스키마 코드
✅ 개선 결과 및 성과 (Results)
즉각적인 사용자 피드백 제공:
사용자가 비밀번호를 입력하는 도중 또는 입력 완료 후 즉시 일치 여부를 확인할 수 있어 사용자 경험(UX)이 크게 향상되었습니다.
서버 부하 감소:
비밀번호 불일치와 같은 기본적인 유효성 검사 실패 요청이 서버에 도달하지 않으므로, 서버의 불필요한 처리 부담이 줄어들었습니다.
클라이언트 성능 향상:
불필요한 네트워크 왕복이 줄어들어 전반적인 폼 제출 및 유효성 검사 과정의 속도가 빨라졌습니다.
개발 효율성 증대:
Zod의 강력한 타입 추론 기능을 활용하여 스키마 정의와 폼 연동이 더욱 견고하고 효율적으로 이루어졌습니다.
🔗 참고자료 / 관련 이슈, PR
refine메서드 활용법src/domain/Auth/schemas/request.tssrc/domain/Auth/components/SignUpForm.tsxsrc/domain/Auth/hooks/useSignupMutation.ts(해당 스키마를 사용하는 뮤테이션 훅)Beta Was this translation helpful? Give feedback.
All reactions