분류 전체보기

WebMvcTest 403 Forbidden 해결하기(feat. CSRF)
1. Issue DescriptionWebMvcTest로 MemberController의 로그인 메서드에 대한 테스트 코드를 작성하는 중 403 코드(Forbidden)가 발생하는 오류가 발생하였다.2. 원인 추론1️⃣ 첫 번째 의문forbidden? forbidden은 보통 권한이 없을 때 볼 수 있는 에러코드인데, 나는 로그인 메서드 엔드포인트를 SecurityConfig에서 permitAll() 설정을 해준 상태였다. 왜 forbidden 코드가 떴을까?WebMvcTest Spring Security 403으로 검색CSRF 토큰 문제 때문이라고 한다. 실제로 테스트 실패 로그를 보니 세션 쪽에 CSRF 토큰이 있었다.MockHttpServletRequest: HTTP Method = POS..

CORS란? Spring Security에 따른 CORS 설정
Vite+React, Spring Boot로 어플리케이션을 구현하면서 CORS 관련 에러를 만나게 되었다. CORS에 대해서 약간은 알고 있었지만 이번 기회로 좀 더 자세하게 개념과 그 해결 방법에 대해서 정리해보았다.💁♀️버전Spring boot 3.3.3Spring Security 6.3.3 CORS란?Cross-Origin Resource Sharing, 교차 출처 리소스 공유기본적으로 웹 브라우저는 보안상의 이유로, 한 웹사이트에서 다른 웹사이트의 데이터를 바로 가져오지 못하게 막아두고 있다.쉽게 말하면, 한 웹사이트에서 다른 웹사이트에 있는 정보를 가져오려고 할 때 필요한 규칙 예시를 보며 CORS를 이해해보자Vite와 React로 만든 프론트엔드가 localhost:5173에서 실행되고 ..

Docker PostgreSQL에서 정렬이 이상하게 되는 문제
1. Issue Description카테고리별로 식재료를 조회하는 기능에서 과일 카테고리의 식재료를 가져오되, name 기준으로 오름차순 하는 요청을 했는데 다음과 같은 결과가 나왔다.{ "data": { "getIngredientsByCategory": [ { "name": "배", ... }, { "name": "딸기", ... }, { "name": "사과", ... }, { "name": "자몽", ... }, { "name": "포도", ... }, { "name": "복숭아", ... ..

Timestamped ZonedDateTime 오류
1. Issue Description발생한 예외org.springframework.dao.InvalidDataAccessApiUsageException:Cannot convert unsupported date type java.time.LocalDateTime to java.time.ZonedDateTime;Supported types are [java.time.LocalDateTime, java.time.LocalDate, java.time.LocalTime, java.time.Instant, java.util.Date, java.lang.Long, long] 2. 원인 추론ServiceImpl 다음에 터진 예외였고, ZonedDateTime이 언급되어 있으므로 Auditing에서 문제가 생겼을 거라고..

Redis Docker Container와 Spring Boot 연결이 안 되는 오류
1. Issue DescriptionRedis와 Spring Boot를 Docker에 띄워서 구현했던 Refresh Token 기능을 테스트해보려고 했는데, Connection이 거절되었다는 예외가 발생했다.Caused by: java.net.ConnectException: Connection refused 여러 문제가 있었다.1. Redis Container는 작동하는데 로컬에서 Redis Container로 DB 연결이 되지 않음bind 옵션을 풀어주어야 했다. 기본적으로 외부 접속이 안 되게끔 설정이 되어 있는 것 같았다.도커 Redis 설정 파일 redis.conf 파일을 만들어 bind 0.0.0.0 으로 설정해서 외부 접속을 허용하였다.2. RedisConfig.Java 파일에서 port를 따..

만료된 토큰에서 토큰에 저장된 정보를 가져올 수 없는 오류
1. Issue Description만료된 Access Token에서 추출한 회원 정보로 저장된 Refresh Token을 조회하여 같은지 확인하려는데 다음과 같은 예외가 발생했다.io.jsonwebtoken.ExpiredJwtException: JWT expired at 2024-05-20T10:23:30Z. Current time: 2024-05-20T12:01:17Z, a difference of 5867735 milliseconds. Allowed clock skew: 0 milliseconds. at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:427) ~[jjwt-impl-0.11.5.jar:0.11.5] at io.j..

Slack Webhook을 이용한 메시지 미리보기가 안되는 오류
1. Issue DescriptionGithub Action과 슬랙 Webhook을 이용하여 PR 리뷰 Request, Submit 시 Slack에 메시지를 보내 알려주는 기능을 구현하였고, 메시지는 다음과 같이 성공적으로 온 것을 확인할 수 있었다. 초기에 테스트할 때는 슬랙 창을 열어두고 있어서 몰랐는데 나중에 다음과 같이 [no preview available] 메시지가 뜨면서 미리보기가 안 되는 것을 알게 되었다. 2. 원인 추론(1) 구글 검색검색어 : slack message no preview available나의 경우와 비슷했던 글찾았던 StackOverFlow 링크이 경우 윈도우 알림이 서식 있는 텍스트 요소에 대해 지원하지 않아서 그럴 수 있다는 의견이 있었다.슬랙으로 알림이 오는 다른..

GraphQL - mutation 실행 시 필드 값이 null로 들어오는 오류
1. Issue Description프로젝트에서 정의했던 mutation 테스트 시 필드에 null이 들어오는 이슈 발생▶ mutation 정의type Mutation { signup(input: SignupRequestDto!): ApiResponseDto!}input SignupRequestDto { email: String! password: String! nickname: String!}type ApiResponseDto { message: String!} ▶ Altair에서 테스트 했던 mutationmutation { signup( input: { email: "string", password: "string", nickname..

Docker에서 Spring Boot 프로젝트 build 시 GraphQL 요청을 보내지 못하는 오류
1. Issue Description ▶ 도커에서 compose 스크립트를 이용하여 프로젝트를 빌드하고 Altair에서 http://localhost:8080/graphql 로 쿼리 요청 시 ▶ 브라우저 상에서 http://localhost:8080/graphiql 입력 시 2. 원인 추론 1. 도커 컨테이너 IP로 접속 http://{도커_컨테이너_IP_주소}:{컨테이너_포트}/graphiql → 응답하는 데 시간이 너무 오래 걸려 실패 2. 디버깅 logging.level.root=DEBUG 로그 레벨을 설정하여 도커 컨테이너 터미널에서 디버깅 확인. → 포트 접속도 되고 /graphiql로 GET 요청이 들어오는 것까지 확인. 포트 문제인가 했는데 그건 아닌 것 같다. 그런데 response가 나가..
![[TIL] Git Rebase를 사용해서 일 효율 높이기!](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbg3Vnv%2FbtsAbpQ0tKU%2FjkLzsMEEH8xnEseKZbyLnk%2Fimg.png)
[TIL] Git Rebase를 사용해서 일 효율 높이기!
프로젝트를 진행하면서 PR 리뷰 받기를 기다리다가 다른 작업이 늦어지게 된 것이 여러 번.. git의 rebase기능을 이용하여 일의 효율을 높일 수 없을까 생각하여 공부를 하며 정리했다.