java
스프링 시큐리티 ③ : 사용자 저장소
스프링 시큐리티 ③ : 사용자 저장소사용자 저장소에는 요청별로 요구하는 권한과 사용자 정보가 저장되어있어야한다. 두 가지 방법으로 이 사용자 저장소를 지정하고, 저장소에 있는 사용자를 권한처리 할 수 있다. 1. 인 메모리서버의 메모리 내부에 사용자 저장소를 만드는 방식이다. 계정의 종류가 매우 적고, 계정의 아이디, 패스워드, 권한목록이 변경되지 않을때 사용하기 좋다. configure() 메서드를 아래와 같이 오버라이드해 사용한다. 12345678910111213@Configuration@EnableWebMvcSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter{ @Override protected void configure..
스프링 시큐리티 ② : 상세 설정하기
스프링 시큐리티 ② : 상세 설정하기WebSecurityConfigurerAdapter 의 세가지 configure() 메서드를 오버라이드하는 것으로 미세한 설정이 가능하다. 메서드 설명 configure(WebSecurity) 스프링 시큐리티의 필터 연결을 설정하기 위한 오버라이딩 configure(HttpSecurity) 인터셉터로 요청을 안전하게 보호하는 방법을 설장하기 위한 오버라이딩 configure(AuthenticationManagerBuilder) 사용자 세부 서비스를 설정하기 위한 오버라이딩 123456789protected void configure (HttpSecurity http) throws Exception{ http .authorizeRequests() .anyRequest()..
이미지를 BLOB 형태로 DB에 저장하기
이미지를 BLOB 형태로 DB에 저장하기 요즘은 잘 사용하지 않는 방식이지만, DB 컬럼에 이미지나 파일을 저장하는 경우가 있다. 아무래도 자주 사용되는 방식도 아니고, MyBatis를 이용해 데이터를 삽입하는 방법은 나도 잘 몰랐기 때문에 포스팅해본다. 주요 로직은 아래와 같다.1. 서비스단에서 주어진 파일 경로를 바탕으로 파일 객체를 만든다.2. 파일 객체로 이미지를 byte 배열 형태로 변환한다.3. MyBatis를 통해 데이터를 삽입, 수정한다. 위 로직을 보았을 때 한 가지 의문점이 생길 수도 있다. DB 컬럽 타입은 BLOB인데 왜 byte 배열로 변환하는것일까? 이유는 MyBatis의 typeHandlers에 있다. 아래 사진을 보면 알 수 있듯이, Java의 byte[]을 JDBC의 BLO..
스프링 시큐리티 ① : 기본 설정
스프링 시큐리티 ① : 기본 설정스프링 시큐리티는 필터 기반으로 인증과 권한을 통해 강력한 보안을 제공한다. 그 중 DelegatingFilterProxy 는 스프링 애플리케이션 컨텍스트에 위임된 필터 빈을 처리하기 위한 프록시 필터로써 스프링 프레임워크 기반의 웹 애플리케이션에서 서블릿 필터 라이프 사이클과 연계해 스프링 빈 의존성을 서블릿 필터에 바인딩하는데 사용된다. 아래 기본 설정을 해두면 스프링에서 제공하는 10개의 시큐리티 필터가 자동으로 등록된다. 이 때 10개의 필터는 아래와 같다.00 시큐리티 필터 필터 설명 SecurityContextPersistenceFilter SecurityContextRepository에서 SecurityContext를 로드하고 저장하는 일을 담당함 Logout..
예외 처리하기
예외 처리하기 몇 가지 스프링의 예외들은 자동으로 명시된 HTTP 상태 코드로 매핑된다. HTTP 상태 코드로 매핑하기 위해 예외에는 @ResponseStatus 애너테이션을 붙여줄 수 있다. 예외 처리를 위한 메서드에는 @ExceptionHandler 애너테이션을 붙여줄 수 있다. 예외를 HTTP 상태 코드에 매핑하기 스프링 예외 상태 코드 BindException 400 - Bad Request ConversionNotSupportedException 500 - Internal Server Error HttpMediaTypeNotAcceptableException 406 - Not Acceptable HttpMediaTypeNotSupportedException 415 - Unsupported Med..
멀티 파트 폼 데이터
멀티 파트 세팅DispatcherServlet에는 멀티 파트 요청의 데이터를 파싱하기 위한 로직이 구현되어 있지 않다. 대신, 아래의 두 인터페이스로 MultipartResolver를 구현한다. CommonsMultipartResolver : 멀티 파트 요청을 Jakarta Commons FileUpload를 사용하여 결정 StandardServletMultipartResolver : 서블릿 3.0을 사용한 멀티 파트 요청에 대한 지원(spring 3.1 이상) 12345@Beanpublic MultipartResolver multipartResolver () throws IOException{ return new StandardServletMultipartResolver();}Colored by Col..