- 개발자들을 위한 블로그인 velog를 클론 코딩하여 코딩 능력을 향상 시키는 레벨 업 프로젝트입니다.
- 로그인 및 회원가입 (JWT Token 사용)
- 로그아웃
- 프로필 이미지 추가
- 텍스트 작성
- 이미지 첨부
- 좋아요
- 태그
- 댓글
- 좋아요
- 대댓글
- 검색
- 게시글 정렬 (최신순, 조회순)
- 시간별 카테고리
- 무한스크롤
- 페이징
- 마이 페이지
- 회원가입 시 메일 인증
- Refresh token, Access Token
✅ CORS 관련한 트러블 슈팅
커스텀한 Token 을 불러오는 과정에서 문제 였다.
addExposedHeader("커스텀한 헤드명") 이 부분에다가 우리가 추가한 헤더 부분을 가져오지 못하는 것에서 생긴 403 에러 였다.
브라우저가 접근할 수 있는 헤더를 추가 즉, addExposedHeader 에 직접 커스텀한 헤더 명을 추가해주니까 해결이 되었다.
✅ multipartFile 이미지 첨부 문제
프로필 이미지 업로드를 할 때 이미지 첨부가 되지 않아서 발생한 문제가 있었는데, 이 부분은 multipartFile 이 null 이면
즉, 아무런 요청이 없으면 nullpointException 을 띄우는 것이 원인이었다.
그래서 try-catch 를 통해서 해당 부분을 해결을 해서 마무리 지을 수 있었다.
✅ 상세페이지 좋아요 상태 표시
게시글 상세페이지에 좋아요 버튼 표시 시, 좋아요를 누른 회원 / 누르지 않은 회원 / 비회원 으로 구분하여 표시해야 함,
HttpServletRequest로 객체를 전달받아 유저 정보를 얻음 -> JPA를 활용해서 유저가 해당 게시글에 좋아요를 눌렀는지 안 눌렀는지 확인 후
True / False로 반환 -> 토큰값이 없을 경우 비회원이기 때문에 무조건 False 반환
✅ 스프링 시큐리티 필터 안에서 공통 응답 처리
시큐리티 필터 안에서는 커스텀한 예외 메세지로 응답이 되지 않는 문제가 있었는데 커스텀한 예외 응답이 바로 반환 되지 못하고
다음 필터로 넘어가는 것이 문제였다. 다음 필터로 넘어가지 않게 바로 return문을 통해 메소드를 종료 시켜 커스텀한 예외 응답을
반환 시키는 것으로 해결하였다.
✅ 서버시간 트러블
클라이언트를 통해 글 작성, 댓글 작성 시 시간이 9시간 전의 시간으로 작성되는 문제였는데 EC2 서버의 시간이 세계협정시 (UTC)로
적용되어있는 것이 원인으로 EC2 서버에서 dpkg-reconfigure 명령어를 사용해 EC2 서버의 시간을 KST로 변경하여 해결하였다.
📌 프론트엔드 깃허브 : https://github.com/2jo-levelog/levelog-Frontend
📌 백엔드 깃허브 : https://github.com/2jo-levelog/levelog-Backend
📌 팀 노션 : https://www.notion.so/10-2-levelog-3c77ed1eb7234fe3be33faeb67e93bf9