Spring
-
Interceptor 란 사전적 의미로 "낚아채다" 라는 뜻처럼 사용자 요청이 Filter, DispatchServlet에 의해 요청에 알맞는 컨트롤러를 찾아 컨트롤러에게 전달되기 전 요청(HttpRequest, HttpResponse)을 낚아채어 개발자가 원하는 추가적인 작업을 진행하기 위해 사용한다. 위 이미지를 보면 사용자의 모든 요청을 Front Controller 라고 하는 DispatcherServlet이 받는다. 요청받은 DispatcherServlet은 HandlerMapping 을 통해 요청에 맞는 적절한 Controller를 찾아 요청을 넘기게 되는데 Controller로 요청을 넘기기전에 Interceptor가 요청을 가로챈다. 요청을 가로채어 필요한 작업을 진행한 후 다시 Contr..
HandlerInterceptor 사용하기Interceptor 란 사전적 의미로 "낚아채다" 라는 뜻처럼 사용자 요청이 Filter, DispatchServlet에 의해 요청에 알맞는 컨트롤러를 찾아 컨트롤러에게 전달되기 전 요청(HttpRequest, HttpResponse)을 낚아채어 개발자가 원하는 추가적인 작업을 진행하기 위해 사용한다. 위 이미지를 보면 사용자의 모든 요청을 Front Controller 라고 하는 DispatcherServlet이 받는다. 요청받은 DispatcherServlet은 HandlerMapping 을 통해 요청에 맞는 적절한 Controller를 찾아 요청을 넘기게 되는데 Controller로 요청을 넘기기전에 Interceptor가 요청을 가로챈다. 요청을 가로채어 필요한 작업을 진행한 후 다시 Contr..
2023.03.14 -
Spring Security 에서 권한에 따른 접근 불가한 url 에 대한 handler 설정이다. 본인은 권한 없는 사람의 접근에 따라 특정 화면으로 고정시킬 목적으로 handler 설정을 한다. 1. AccessDeniedHandler 발생 시 보여줄 View 화면 설정 본인은 아래와 같은 경로에 accessDenied.html 파일을 생성했다. 2. AccessDeniedHandler 설정 아래와 같이 security/handler/ 경로에 AuthenticationAccessDeniedHandler 클래스를 생성한다. import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServ..
[Spring Security] AccessDeniedHandler 설정Spring Security 에서 권한에 따른 접근 불가한 url 에 대한 handler 설정이다. 본인은 권한 없는 사람의 접근에 따라 특정 화면으로 고정시킬 목적으로 handler 설정을 한다. 1. AccessDeniedHandler 발생 시 보여줄 View 화면 설정 본인은 아래와 같은 경로에 accessDenied.html 파일을 생성했다. 2. AccessDeniedHandler 설정 아래와 같이 security/handler/ 경로에 AuthenticationAccessDeniedHandler 클래스를 생성한다. import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServ..
2022.12.02 -
Spring Security 설정 시 Session 생성에 관해 궁금하여 작성하게 되었다. Spring Security는 csrf 가 기본적으로 enable() 설정되어 있다. 매번 csrf 설정을 disable() 설정 하다보니 자동으로 Session이 생성되어 있고 서버와 통신할 때 CSRF 토큰값을 확인하지 않아 특정 에러가 발생하는걸 발견하지 못했다. 하지만 csrf 설정을 하다가 에러를 발견했다. 본인은 특정 게시판을 만드는데 로그인을 하지 않았을땐 메인페이지가 떠야하나 위와 같은 에러가 발생했다. 모든 요청(ajax) 에 대해 csrf 값을 체크하는데 세션이 존재하지 않아 뜨는듯한 느낌이였다. 일단 Spring 에서의 HttpSession 은 누가 생성하는가 봤더니 서블릿 컨테이너가 생성한다고..
[Spring Security] Cannot create a session after the response has been committed (세션 에러)Spring Security 설정 시 Session 생성에 관해 궁금하여 작성하게 되었다. Spring Security는 csrf 가 기본적으로 enable() 설정되어 있다. 매번 csrf 설정을 disable() 설정 하다보니 자동으로 Session이 생성되어 있고 서버와 통신할 때 CSRF 토큰값을 확인하지 않아 특정 에러가 발생하는걸 발견하지 못했다. 하지만 csrf 설정을 하다가 에러를 발견했다. 본인은 특정 게시판을 만드는데 로그인을 하지 않았을땐 메인페이지가 떠야하나 위와 같은 에러가 발생했다. 모든 요청(ajax) 에 대해 csrf 값을 체크하는데 세션이 존재하지 않아 뜨는듯한 느낌이였다. 일단 Spring 에서의 HttpSession 은 누가 생성하는가 봤더니 서블릿 컨테이너가 생성한다고..
2022.11.28 -
Spring 에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller 와 @RestController 가 있습니다. 일반적인 Spring MVC의 컨트롤러인 @Controller 와 Restful 방식의 컨트롤러인 @RestController 의 주요한 차이점은 HTTP Response Body가 생성되는 방식이다. @Controller 와 @RestController 는 용도의 차이라고 생각하면 된다. 옛날에는 jsp 나 html 과 같이 view에 데이터를 담아 전달했기 때문에 @Controller를 사용했다. 하지만 최근에는 백엔드와 프론트엔드를 분리하면서 백엔드쪽에선 Rest API를 통해 Json 데이터만 전달하고 프론트엔드는 백엔드에서 넘어온 Json 데이터를 화면에 보여주는 방식이기..
@Controller(Model), @RestController(ModelAndView)Spring 에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller 와 @RestController 가 있습니다. 일반적인 Spring MVC의 컨트롤러인 @Controller 와 Restful 방식의 컨트롤러인 @RestController 의 주요한 차이점은 HTTP Response Body가 생성되는 방식이다. @Controller 와 @RestController 는 용도의 차이라고 생각하면 된다. 옛날에는 jsp 나 html 과 같이 view에 데이터를 담아 전달했기 때문에 @Controller를 사용했다. 하지만 최근에는 백엔드와 프론트엔드를 분리하면서 백엔드쪽에선 Rest API를 통해 Json 데이터만 전달하고 프론트엔드는 백엔드에서 넘어온 Json 데이터를 화면에 보여주는 방식이기..
2022.08.09 -
Spring Security 를 사용하여 Config 설정을 하는데 간단한 설정만으로도 로그인/로그아웃 등의 처리가 가능하다. URL에 대한 접근 권한 설정, 인증 전체 흐름에 필요한 로그인/로그아웃 페이지 설정, csrf 등 모든 설정을 간단한 방법으로 가능하다. @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter{ @Override public void configure(HttpSecurity http) throws Exception { http // 페이지 권한 설정 .authorizeRequests() .antMatchers( "/", "/error", "/static/**..
Spring Security Config 설정Spring Security 를 사용하여 Config 설정을 하는데 간단한 설정만으로도 로그인/로그아웃 등의 처리가 가능하다. URL에 대한 접근 권한 설정, 인증 전체 흐름에 필요한 로그인/로그아웃 페이지 설정, csrf 등 모든 설정을 간단한 방법으로 가능하다. @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter{ @Override public void configure(HttpSecurity http) throws Exception { http // 페이지 권한 설정 .authorizeRequests() .antMatchers( "/", "/error", "/static/**..
2022.08.09 -
1. /WEB-INF/spring/root-context.xml 파일 설정 Dynamic Web Project 만들기 2 에서 설정한 root-context.xml 파일에 내용을 추가한다. /WEB-INF/spring/root-context.xml 파일에 추가 * context:component-scan => 특정 패키지 안의 클래스들을 스캔하여 Annotation을 확인 후 Spring Bean 으로 등록한다. => @Component, @Controller, @Service, @Repository 등 component 어노테이션들을 Bean 등록 한다. 2. /WEB-INF/spring/appServlet/dispatcher-servlet.xml 파일에 내용 추가 * handlerMapping => ..
Dynamic Web Project 만들기 4 - 프로젝트 기본 설정(component-scan, handlerMapping, ViewResolver)1. /WEB-INF/spring/root-context.xml 파일 설정 Dynamic Web Project 만들기 2 에서 설정한 root-context.xml 파일에 내용을 추가한다. /WEB-INF/spring/root-context.xml 파일에 추가 * context:component-scan => 특정 패키지 안의 클래스들을 스캔하여 Annotation을 확인 후 Spring Bean 으로 등록한다. => @Component, @Controller, @Service, @Repository 등 component 어노테이션들을 Bean 등록 한다. 2. /WEB-INF/spring/appServlet/dispatcher-servlet.xml 파일에 내용 추가 * handlerMapping => ..
2022.07.14