1월, 2019의 게시물 표시

Spring에서 Request  2번 읽기 - HttpServletRequestWrapper

HttpServlceRequestWrapper 필자가 Restful을 스프링으로 만들고 있을 때 JWT(토큰 인증 방식) 을 이용한 인증방식을 이용하려고 했다. 그 인증을 해주는 Interceptor을 하나 만들어서 토큰을 인증했다. 하지만 interceptor에서 request를 읽어버리면 Controller에서 request를 읽지 못하는 단점이 있다. Controller에서 request를 읽어주게 하는 방법이 바로 HTTPServletRequestWrapper 이다. 최근에 평범한 흐름에서 HttpServletRequest body를 두번 읽고 필터 체인에게 넘겨주는 요구가 많아졌다. ( 필자가 위에서 설명한 방법도 body를 두번 읽어야 한다. 한번은 인증을 위해 읽어야하고 한번은 인증이 되면 그 값들을 이용하려는 컨트롤러에게 줘야 하므로) HttpServletRequestWrapper 예제 이 커스텀 소스는 HttpServletRequestWrapper 를 구현한 것이다. 자세한 내용은 서블릿 2.5의 내용을 읽어보면 된다. RequestWrapper.java x import java . io . BufferedReader ; import java . io . ByteArrayInputStream ; import java . io . IOException ; import java . io . InputStream ; import java . io . InputStreamReader ; import javax . servlet . ServletInputStream ; import javax . servlet . http . HttpServletRequest ; import javax . servlet . http . HttpServletRequestWrapper ; public class RequestWrapper extends HttpServletRequestWrapper {     private f