csrf 설정시 enctype="multipart/form-data" 경우 처리문제
- 작성자 :
- 엄*식
- 작성일 :
- 2019-12-16 17:48:21
- 조회수 :
- 3,516
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
안녕하세요.
공통컴포넌트의 게시판 생성후
글쓰기를 하면 '다음 웹 주소(http://localhost:8080/cop/bbs/insertArticle.do)에 대해 발견된 웹페이지가 없습니다.'
로 됩니다.
csrf="true" 로 하였을경우
일반 폼에서는 <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /> 를 넣어주고
<form:from> 에서는 기본적으로 토큰값이 넘어가서 괜찮은데
<form:form commandName="articleVO" action="${pageContext.request.contextPath}/cop/bbs/insertArticle.do" method="post" onSubmit="fn_egov_regist_article(document.forms[2]); return false;" enctype="multipart/form-data">
경우에는 정상작동이 되지 않습니다. 혹시 multipart/form-data 의 경우에는 따로 예외 처리를 해야되나요?
공통컴포넌트의 게시판 생성후
글쓰기를 하면 '다음 웹 주소(http://localhost:8080/cop/bbs/insertArticle.do)에 대해 발견된 웹페이지가 없습니다.'
로 됩니다.
csrf="true" 로 하였을경우
일반 폼에서는 <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /> 를 넣어주고
<form:from> 에서는 기본적으로 토큰값이 넘어가서 괜찮은데
<form:form commandName="articleVO" action="${pageContext.request.contextPath}/cop/bbs/insertArticle.do" method="post" onSubmit="fn_egov_regist_article(document.forms[2]); return false;" enctype="multipart/form-data">
경우에는 정상작동이 되지 않습니다. 혹시 multipart/form-data 의 경우에는 따로 예외 처리를 해야되나요?
A
안녕하세요.
표준프레임워크센터 입니다.
표준프레임워크의 시큐리티 간소화 서비스는
스프링시큐리티를 기반으로 하고 있습니다.
스프링시큐리티의 경우 Filter를 기반으로 동작하는데
enctype="multipart/form-data"로 파일업로드하는경우
기본적으로 Filter Chain을 타지 않는 제약사항이 발생합니다.
이경우
springMultipartFilter을
다음 파일에 적용 해주셔야 합니다.
src/main/java/egovframework/com/cmm/config/EgovWebApplicationInitializer.java
주의하실점은
springSecurityFilterChain 앞에 위치해야 합니다.
다음은 예시 코드입니다.
MultipartFilter springMultipartFilter = new MultipartFilter();
springMultipartFilter.setMultipartResolverBeanName("multipartResolver");
FilterRegistration.Dynamic multipartFilter = servletContext.addFilter("springMultipartFilter", springMultipartFilter);
multipartFilter.addMappingForUrlPatterns(null, false, "*.do");
FilterRegistration.Dynamic springSecurityFilterChain = servletContext.addFilter("springSecurityFilterChain", new DelegatingFilterProxy());
springSecurityFilterChain.addMappingForUrlPatterns(null, false, "*");
감사합니다.
표준프레임워크센터 입니다.
표준프레임워크의 시큐리티 간소화 서비스는
스프링시큐리티를 기반으로 하고 있습니다.
스프링시큐리티의 경우 Filter를 기반으로 동작하는데
enctype="multipart/form-data"로 파일업로드하는경우
기본적으로 Filter Chain을 타지 않는 제약사항이 발생합니다.
이경우
springMultipartFilter을
다음 파일에 적용 해주셔야 합니다.
src/main/java/egovframework/com/cmm/config/EgovWebApplicationInitializer.java
주의하실점은
springSecurityFilterChain 앞에 위치해야 합니다.
다음은 예시 코드입니다.
MultipartFilter springMultipartFilter = new MultipartFilter();
springMultipartFilter.setMultipartResolverBeanName("multipartResolver");
FilterRegistration.Dynamic multipartFilter = servletContext.addFilter("springMultipartFilter", springMultipartFilter);
multipartFilter.addMappingForUrlPatterns(null, false, "*.do");
FilterRegistration.Dynamic springSecurityFilterChain = servletContext.addFilter("springSecurityFilterChain", new DelegatingFilterProxy());
springSecurityFilterChain.addMappingForUrlPatterns(null, false, "*");
감사합니다.