Project

· Project
/** * 게시글의 모든 댓글(대댓글 포함) 조회 * - 최상위 댓글만 조회 → 각 댓글의 자식 목록(childComments)을 재귀적으로 DTO 변환 */ public List getAllCommentsByPostId(Long postId) { // 1) 최상위 댓글들 (parentComment = null) List topComments = commentRepository.findByPost_PostIdAndParentCommentIsNull(postId); // 2) 재귀적으로 childComments까지 DTO로 변환 List result = new ArrayList(); for (Comment commen..
· Project
로그인 처리방식을 서버사이드 렌더링에서 JSON API로 전환 프론트엔드 작업을 하는 팀원이 React 를 사용한다고 했다. 앞서 구현했던 기존의 소셜 로그인 처리 방식은 서버사이드 렌더링과 리다이렉트를 기반으로 설계되어, React와 같은 프론트엔드 프레임워크와 통합하는 데 한계가 있었다. 이를 개선하기 위해 데이터를 JSON 형식으로 반환하도록 API를 전환하여 RESTful 원칙을 준수하고 프론트엔드와의 통합을 최적화했다. 이 글에서는 기존 방식의 문제점을 분석하고, JSON 응답 방식으로 개선된 코드를 비교해볼 것이다.  여러 많은 코드가 있었지만, 그 중 OAuth2 소셜 로그인 처리 방식 개선 작업만 글로 남겨보려고 한다.  기존 코드: 서버사이드 렌더링 기반1. OAuth2Controller..
· Project
>- 문제 상황 • EC2 서버에 배포 후 http://{ip}:8080/ 에 접속했을 때 403 Forbidden 에러 발생 • EC2 인바운드 규칙 등 네트워크 설정은 정상이나, 스프링 시큐리티 때문에 권한 문제가 의심됨 - 원인 • 프로젝트 내에 SecurityFilterChain이 여러 개 존재 • Spring Security는 여러 개의 SecurityFilterChain 중 가장 먼저 매칭되는 체인의 설정을 우선 적용 • 특정 경로만 인증을 요구하게 하고 싶었으나, 두 번째 체인에서도 / 경로를 인증 필요로 설정해버려서 충돌 발생 • @Order 애노테이션을 지정하지 않으면, 빈(Bean)의 생성 순서로 필터 체인 우선순위가 결정되어 예측 불가한 문제 야기 - 해결 방법 1) 필터 체인별로 @..
· Project
1. [error] ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain   이 과정에서 CI/CD 파이프라인이 실패했다. secrets 환경변수 값에는 문제가 없었다.aws ec2는 위에서 확인할 수 있듯 ubuntu 환경이고, ~/.ssh/authorized_key 에 명시된 key는 SHA-1 로 서명된 ssh-rsa 키였다.따라서 리눅스 SSH 설정 파일인 /etc/ssh/sshd_config 파일을 열어서 ssh-rsa를 지원할 수 있도록 추가적으로 입력했다. 1) ec2에 접속(SSH 사용)2) sshd_config 파일을 수정한다.$ cd ..
· Project
error username and password required 해결팀프로젝트 배포를 하는 과정에서 발생했던 문제다. 구글에 찾아봐도 이와 같은 문제를 겪은 사람이 많이 없었다.지금 생각하면, 헛웃음이 나오지만 그래도 재밌었으니 만족한다(?) 일단 도커허브에 로그인이 안되는 문제가 발생했는데..  Workflow File을 작성했고, docker hub의 username과 password를 받아오는 부분을 Github secrets를 활용하여 민감한 데이터를 안전하게 암호화했고, CI/CD workflow에서 이를 참조하도록 아래와 같이 설정했다. (secrets는 workflow 실행 시 안전하게 환경 변수로 전달하게 해준다.)  그런데, Error: Username and password requi..
해달e
'Project' 카테고리의 글 목록