본문 바로가기
728x90
반응형

스프링182

[Spring] 서블릿 예외 처리(필터&인터셉터), 이를 보완한 스프링 부트 오류 페이지 서블릿 예외 처리 - 필터 목표 예외 처리에 따른 필터와 인터셉터 그리고 서블릿이 제공하는 DispatchType 이해하기 예외 발생과 오류 페이지 요청 흐름 1. WAS(여기까지 전파) ← 필터 ← 서블릿 ← 인터셉터 ← 컨트롤러(예외발생) 2. WAS `/error-page/500` 다시 요청 → 필터 → 서블릿 → 인터셉터 → 컨트롤러(/error-page/500) → View 오류가 발생하면 오류 페이지를 출력하기 위해 WAS 내부에서 다시 한번 호출이 발생한다. 이때 필터, 서블릿, 인터셉터도 모두 다시 호출된다. 그런데 로그인 인증 체크 같은 경우를 생각해보면, 이미 한번 필터나, 인터셉터에서 로그인 체크를 완료했다. 따라서 서버 내부에서 오류 페이지를 호출한다고 해서 해당 필터나 인터셉트가 .. 2023. 11. 28.
[Spring] 예외 처리와 오류 페이지 - 서블릿 예외 처리 및 오류 페이지 작동 원리 https://start.spring.io/ 위에 첨부한 프로젝트를 다운받고, build.gradle로 열기 build.gradle 은 아래와 같다.plugins { id 'java' id 'org.springframework.boot' version '2.7.17' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'hello' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '11' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } depend.. 2023. 11. 28.
[Spring] 로그인 처리 시 ArgumentResolver 활용하기 ArgumentResolver는 아래의 포스팅에 설명이 되어있다. https://drcode-devblog.tistory.com/498 [Spring] 요청 매핑 핸들러 어뎁터 구조 그렇다면 HTTP 메시지 컨버터는 스프링 MVC 어디쯤에서 사용되는 것일까? SpringMVC 구조 핵심은 애노테이션 기반의 컨트롤러, 그러니까 @RequestMapping 을 처리하는 핸들러 어댑터인 RequestMappingHandlerAdap drcode-devblog.tistory.com ArgumentResolver 를 이용해서 로그인 회원을 좀 더 편리하게 찾아볼 수 있다. HomeController - 추가 @GetMapping("/") public String homeLoginV3ArgumentResolver(.. 2023. 11. 21.
[Spring] 로그인 처리 - 스프링 인터셉터 스프링 인터셉터 스프링 인터셉터도 서블릿 필터와 같이 웹과 관련된 공통 관심 사항을 효과적으로 해결할 수 있는 기술이다. 서블릿 필터가 서블릿이 제공하는 기술이라면, 스프링 인터셉터는 스프링 MVC가 제공하는 기술이다. 둘다 웹과 관련된 공통 관심 사항을 처리하지만, 적용되는 순서와 범위, 그리고 사용방법이 다르다 스프링 인터셉터 흐름 HTTP 요청 → WAS → 필터 → 서블릿 → 스프링 인터셉터 → 컨트롤러 - 스프링 인터셉터는 디스패처 서블릿과 컨트롤러 사이에서 컨트롤러 호출 직전에 호출 된다. - 스프링 인터셉터는 스프링 MVC가 제공하는 기능이기 때문에 결국 디스패처 서블릿 이후에 등장하게 된다. 스프링 MVC의 시작점이 디스패처 서블릿이라고 생각해보면 이해가 될 것이다. - 스프링 인터셉터에도.. 2023. 11. 21.
[Spring] 로그인 처리 - 서블릿 필터 서블릿 필터 공통 관심 사항 보통 사이트를 보면 사용자의 권한에 따라, 로그인 한 사용자만 들어갈 수 있는 관리 페이지가 있다. 로그인 화면에서 로그인 하지 않은 사용자에게는 상품 관리 버튼을 보이지 않기 때문에 문제가 없어보이지만, http://localhos:8080/items 를 직접 호출하면 상품관리 화면에 들어갈 수 있다. 상품 관리 컨트롤러에서 로그인 여부를 체크하는 로직을 하나하나 작성하면 되겠지만, 등록, 수정, 삭제, 조회 등등 상품관리의 모든 컨트롤러 로직에 공통으로 로그인 여부를 확인해야 한다. 더 큰 문제는 향후 로그인과 관련된 로직이 변경될 때이다. 작 성한 모든 로직을 다 수정해야 할 수 있다. 이렇게 애플리케이션 여러 로직에서 공통으로 관심이 있는 있는 것을 공통 관심사(cro.. 2023. 11. 20.
[Spring] 쿠키와 보안 문제 & 세션 동작 방식 및 세션 직접 구현하기 https://drcode-devblog.tistory.com/559 [Spring] 로그인 구현, 쿠키 적용 지난 포스팅에 이어서 로그인을 구현해보면 아래와 같다. LoginService.java package hello.login.domain.login; import hello.login.domain.member.Member; import hello.login.domain.member.MemberRepository; import lombok.RequiredArgsConstruct drcode-devblog.tistory.com 위 포스팅처럼 쿠키를 사용하면 로그인Id를 전달해서 로그인을 유지할 수 있었다. 그런데, 여기에는 심각한 보안 문제가 있다. 보안 문제 (1) 쿠키 값은 임의로 변경할 수 있다.. 2023. 11. 15.
728x90
반응형