- useAuth와 useUser에서 react-hooks/rules-of-hooks 규칙 비활성화 - Clerk이 비활성화된 상황에서의 조건부 Hook 호출은 의도된 동작
3.8 KiB
3.8 KiB
Clerk 인증 문제 해결 방안 및 최종 권장사항
🔍 문제 진단 결과
1. Clerk CDN 문제 확인됨
- 문제:
joint-cheetah-86.clerk.accounts.dev에서 지속적인 503 Service Unavailable 오류 - 영향: Clerk 실제 컴포넌트 로드 불가능
- 원인: 개발용 Clerk 인스턴스의 서버 문제 또는 사용량 제한
2. 대체 CDN 테스트 결과
✅ https://cdn.jsdelivr.net/npm/@clerk/clerk-js@latest/dist/clerk.browser.js - 200 OK
✅ https://unpkg.com/@clerk/clerk-js@latest/dist/clerk.browser.js - 200 OK
✅ https://cdn.skypack.dev/@clerk/clerk-js@latest/dist/clerk.browser.js - 200 OK
❌ https://joint-cheetah-86.clerk.accounts.dev/npm/@clerk/clerk-js@* - 503 Error
3. 현재 시스템 상태
- ✅ Mock 인증 시스템: 완벽 작동, 한국어 지원
- ✅ Supabase 데이터베이스: 준비됨
- ✅ ChunkLoadError 보호: 정상 작동
- ✅ 사용자 경험: 원활함
🎯 권장 해결 방안
방안 1: 새로운 Clerk 프로젝트 생성 (단기 해결)
# 새로운 Clerk 프로젝트를 생성하여 다른 도메인 키 사용
# 예: VITE_CLERK_PUBLISHABLE_KEY=pk_test_new-instance-name.clerk.accounts.dev$
장점:
- 빠른 해결 가능성
- 기존 Clerk 설정 유지
단점:
- 같은 문제가 재발할 가능성
- 개발용 제한 지속
방안 2: Mock 시스템 고도화 (권장)
현재 Mock 시스템을 기반으로 완전한 인증 시스템 구축
구현 내용:
-
실제 회원가입/로그인 폼 구현
- 이메일/비밀번호 입력
- 폼 검증 로직
- 한국어 에러 메시지
-
Supabase Auth 통합
- 실제 사용자 등록/인증
- 세션 관리
- 비밀번호 재설정
-
사용자 상태 관리
- Zustand 스토어 연동
- 로그인 상태 유지
- 자동 로그아웃
방안 3: 하이브리드 접근 (최적)
Mock UI + Supabase 백엔드 조합
구현 순서:
- 현재 Mock 컴포넌트 UI 유지
- Supabase Auth 로직 연동
- 점진적으로 실제 인증 기능 추가
- Clerk 문제 해결 시 마이그레이션 준비
🚀 즉시 실행 가능한 개선사항
1. Mock 컴포넌트 개선
// 실제 폼 입력 처리
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
const handleLogin = async () => {
// Supabase 인증 로직
const { data, error } = await supabase.auth.signInWithPassword({
email,
password,
});
};
2. 사용자 경험 개선
- 로딩 상태 표시
- 실제 에러 처리
- 성공/실패 피드백
- 자동 리다이렉트
3. 보안 강화
- 토큰 관리
- CSRF 보호
- 세션 만료 처리
📋 구현 우선순위
Phase 1: 기본 인증 (1-2시간)
- Supabase Auth 설정
- 로그인/회원가입 폼 구현
- 기본 상태 관리
Phase 2: 사용자 경험 (1시간)
- 로딩/에러 상태
- 한국어 메시지
- 리다이렉트 로직
Phase 3: 고급 기능 (선택사항)
- 소셜 로그인
- 비밀번호 재설정
- 이메일 인증
💡 최종 권장사항
현재 상황에서는 방안 2 (Mock 시스템 고도화)를 권장합니다.
이유:
- 즉시 사용 가능: Clerk CDN 문제와 무관
- 완전한 제어: 인증 플로우 완전 커스터마이징
- 한국어 최적화: 완벽한 한국어 사용자 경험
- 확장성: 향후 다른 인증 시스템으로 마이그레이션 용이
- 안정성: 외부 서비스 의존성 최소화
다음 단계:
- Mock 컴포넌트에 실제 폼 로직 추가
- Supabase Auth 연동
- 사용자 상태 관리 개선
- 테스트 및 검증
이 접근법으로 Clerk 문제와 상관없이 완전히 작동하는 인증 시스템을 구축할 수 있습니다.