디버깅 & 리팩터링2024. 10. 2. 02:05회원가입 폼, 상품등록 폼 제공을 프론트에서? 백에서?

이전 포스팅에서 Spring Security에서 발생하는 필터 문제를 해결하던 중에 아래와 같은 문제를 추가적으로 확인하였다.SecurityConfig클래스에 "/products" 경로에 대한 접근을 인증하지 않도록 추가해주었다.하지만 내 프로젝트에서는 상품을 등록할 때에는 반드시 로그인이 되어있는 상태에서 상품추가에 접근할 수 있도록 해야만한다.따라서 상품등록 리소스인 GET - /products/new에 비로그인 상태에서 접근이 불가능한지 확인할 필요가 있다.상품을 등록하는 과정은 아래와 같다.로그인상품등록 폼으로 이동상품등록 POST 요청을 통하여 서버에 상품을 등록위 과정에서 만약 로그인이 되어있지 않은 상태라면 로그인창으로 리다이렉트해야한다.현재 애플리케이션에서 확인해보니 비로그인상태에서 상품등..

디버깅 & 리팩터링2024. 10. 1. 02:42리소스 접근권한과 범위 설정

주요개발 환경SpringBoot 3.xReact 18.xSpring Security문제 개요클라이언트에서 localhost:3000으로 메인페이지가 설정되어있고 해당 URL을 호출하면 아래와 같이 서버에 fetch를 보내게 된다.const response = await fetch('http://localhost:8080/products', { headers: { 'Authorization': `Bearer ${token}`, }, });처음에는 "일단 프로그램을 동작하도록 구현해놓고 나중에 리팩터링하자" 라는 생각으로 메인페이지에서는 인증이 필요없음에도 불구하고 HTTP 헤더에 세션스토리지로부터 조회한 JWT토큰을 함께 요청하도록 하였습니다.그 결과, SpringSec..

Framework/Spring2024. 9. 7. 00:30[Spring] - HandlerExceptionResolver 활용하여 예외처리하기

이 포스팅을 읽기전에 이전의 작성한 포스팅들과 연관되어 설명하는 것이 많기때문에 이전 포스팅들을 읽고오는 것을 추천한다.아래 링크는 포스팅 순서대로 첨부한 것이다.2024.09.04 - [Framework/Spring] - [Spring] 쉬우면서 정확하게 익혀보는 필터와 인터셉터의 예외처리 흐름과 예외 페이지 응답 [Spring] 쉬우면서 정확하게 익혀보는 필터와 인터셉터의 예외처리 흐름과 예외 페이지 응답스프링을 사용하지 않는 순수 서블릿 컨테이너는 Exception과 response.sendError(Http상태코드, 오류메시지)두 가지 방식으로 예외를 처리한다.  Exception으로 처리하기기본적으로 자바는 예외가 발생하lee-dev-log.tistory.com2024.09.06 - [Frame..

Framework/Spring2024. 9. 7. 00:19[Spring] - 스프링에서 예외처리를 위한 'HandlerExceptionResolver' 알아보기

[Spring] - API예외 처리를 이해하기위한 기본 개념!이 포스팅은 이전에 작성한 아래 포스팅을 읽었다는 가정하에 작성한다.이전포스팅을 읽어야만 현재 포스팅이 이해되는 것은 아니지만 글의 흐름을 이전포스팅과 연관지어서 작성하며 코드를lee-dev-log.tistory.com  [Spring] 쉬우면서 정확하게 익혀보는 필터와 인터셉터의 예외처리 흐름과 예외 페이지 응답스프링을 사용하지 않는 순수 서블릿 컨테이너는 Exception과 response.sendError(Http상태코드, 오류메시지)두 가지 방식으로 예외를 처리한다.  Exception으로 처리하기기본적으로 자바는 예외가 발생하lee-dev-log.tistory.com먼저 이 포스팅을 읽기전에는 이전에 작성했던 위의 포스팅을 읽은 후에 ..

Framework/Spring2024. 9. 6. 13:26[Spring] - API예외 처리를 이해하기위한 기본 개념!

이 포스팅은 이전에 작성한 아래 포스팅을 읽었다는 가정하에 작성한다.이전포스팅을 읽어야만 현재 포스팅이 이해되는 것은 아니지만 글의 흐름을 이전포스팅과 연관지어서 작성하며 코드를 이전 포스팅의 것을 재사용하기때문에 이전 포스팅을 읽어보는것을 권장한다 ! [Spring] 쉬우면서 정확하게 익혀보는 필터와 인터셉터의 예외처리 흐름과 예외 페이지 응답스프링을 사용하지 않는 순수 서블릿 컨테이너는 Exception과 response.sendError(Http상태코드, 오류메시지)두 가지 방식으로 예외를 처리한다.  Exception으로 처리하기기본적으로 자바는 예외가 발생하lee-dev-log.tistory.com  이전 포스팅에서는 예외 처리, HTTP 상태코드에 맞는 에러 페이지를 작성하여 /template..

[Spring] 쉬우면서 정확하게 익혀보는 필터와 인터셉터의 예외처리 흐름과 예외 페이지 응답
Framework/Spring2024. 9. 4. 00:43[Spring] 쉬우면서 정확하게 익혀보는 필터와 인터셉터의 예외처리 흐름과 예외 페이지 응답

스프링을 사용하지 않는 순수 서블릿 컨테이너는 Exception과 response.sendError(Http상태코드, 오류메시지)두 가지 방식으로 예외를 처리한다.  Exception으로 처리하기기본적으로 자바는 예외가 발생하면 예외를 다음 메서드로 계속 넘기다가 main()메서드가 종료될 때 까지 예외를 처리하지 못할 경우 예외 정보를 남기고 해당 쓰레드는 종료된다.웹 애플리케이션은 쓰레드가 하나만 있는것이 아니라 사용자별로 각각의 쓰레드가 할당된다.애플리케이션 어딘가에서 예외가 발생하고 그 예외를 처리하지 않고 서블릿 밖으로 까지 예외가 전달된다면 어떻게 될까?컨트롤러(예외발생) -> 인터셉터 -> 서블릿 -> 필터 -> WAS예외는 타고타고 올라가서 WAS까지 전달되며 WAS는 서버에서 발생한 예외..

테스트2024. 9. 1. 21:22[테스트] 테스트를 위한 Mock

이메일을 전송하는 비즈니스 로직의 테스트코드를 작성해야한다고 해보자어떻게 작성해야할까?'벤더의 SMTP를 통하여 클라이언트로부터 받은 정보를 데이터로 만들어 이메일을 전송한다'라는 로직을 수행해야하는데 일반적으로 테스트코드를 작성한다면 실제 이메일이 테스트코드를 실행할때마다 날라가게된다. 만약 회원가입시에 이메일을 통해 인증번호를 받고 인증번호를 서버와 일치하는지 확인하고.. 이런테스트 코드를 작성하려면 너무 많은 고민을 해야하고 시간과 자원을 낭비하게 될 수 있다."만약 이메일을 전송한셈 치면어떨까?" 라는 생각으로 사용하는 테스트 라이브러리가 Mock이다.Mock은 "가짜"라는 의미로 테스트 코드에서 사용하고자하는 컴포넌트를 가짜 컴포넌트 대상으로 만들어 해당 컴포넌트에 대한 반환값 또는 동작 기능을..

image