home..

Company Project

1. 프로젝트 소개 (Introduction)





2. 개발 환경 (Tech Stack)



3. 주요 기능 (Features)




4. 시스템 아키텍처 (System Architecture)


아키텍처 다이어그램

ERD Diagram 링크


5. 작성 문서 (Deliverables)



6. 핵심 구현 (Core Implementation)


로그인 페이지


강사 대시보드


과정정보 페이지


과제관리 페이지


7. 트러블 슈팅 (Troubleshooting)


  1. reCAPTCHA 토큰이 다시 작성 버튼 클릭 시 제거되지 않음
    • 문제 상황 : 사용자가 “다시 작성” 버튼 클릭 시 reCAPTCHA 토큰이 제거되지 않아, 새로 인증을 시도할 수 없음
    • 원인 : reCAPTCHA 토큰은 수동으로 제거되지 않으며 일정 시간이 지나야 자동 만료됨
    • 해결 과정 : grecaptcha.reset() 메서드를 사용하여 토큰을 수동으로 초기화, 버튼 클릭 시 명시적으로 토큰 초기화 코드 실행
  2. 이메일 인증하기 버튼 클릭 시 404 에러
    • 문제 상황 : 이메일 인증하기 버튼 클릭 시 404 Not Found 에러 발생
    • 원인 : 백엔드 API URL 오타 또는 라우팅 설정 누락
    • 해결 과정 : 이메일 인증 요청 URL을 정확히 확인하고 프론트에서 호출 경로 수정, 백엔드 컨트롤러의 엔드포인트 확인 및 CORS 허용 설정
  3. 카카오/구글 로그인 시 DB 중복 등록
    • 문제 상황 : SNS 로그인 사용자가 재로그인할 때마다 회원 정보가 DB에 중복 저장됨
    • 원인 : 로그인 시 기존 사용자 확인 로직 없이 매번 신규 회원으로 등록
    • 해결 과정 : SNS 로그인 시 이메일 또는 고유 ID 기준으로 기존 사용자 조회, 존재할 경우 새로 등록하지 않고 로그인 처리만 진행
  4. JWT 관련 Git 충돌
    • 문제 상황 : JWT 인증 기능을 구현하는 과정에서 팀원 각자가 JwtTokenProvider, JwtAuthenticationFilter, SecurityConfig 등을 각각 작성하여 Git merge 시 충돌 발생
    • 원인 : 동일한 기능을 각자 다른방식으로 구현, 공통 클래스들을 따로 작성하여 git 충돌이 발생
    • 해결 과정 : JWT 관련 코드를 공통 클래스로 통합하고, Bean 등록 방식을 통해 다중 UserDetailsService를 분리 주입하여 구조를 정리함
  5. Refresh Token 없이 Access Token만 초기화한 구조로 인한 보안 문제
    • 문제 상황 : 갱신 버튼을 누르면 토큰을 재발급받기는 했지만, 이는 Refresh Token을 통한 재발급이 아니라 단순히 Access Token을 새로 발급하는 요청
    • 원인 : “Refresh Token”이라는 명칭만 사용했을 뿐, 실제로는 서버에 저장하거나 관리하지 않아 보안에 취약한 구조였음
    • 해결 과정 : 잘못 구현된 점을 인지하고, Refresh Token의 개념과 역할을 명확히 정리함. 이후 Refresh Token을 별도로 생성하고 서버에서 관리하는 구조로 개선할 필요성을 확인하여, 로직 수정이 필요한 상황임


8. 회고 (Outcomes & Learnings)





© 2026 Jeongbin Bang   •  Powered by Soopr   •  Theme  Moonwalk