Backend/Spring Project

[Spring Framework/스프링 프레임워크] 스프링 시큐리티(Spring Security) 적용 시 인코딩(encoding) 필터 적용 안되는 경우

냠냠:) 2020. 8. 23. 19:10

이번 글은 아주 기초적이면서 스프링 프레임워크를 시작하고 로그인 페이지 구성을 하면서 겪은 아주 초보적인 실수다ㅠㅠㅜ.

 

처음 스프링 프레임워크를 시작하면서 web.xml에 encodingFilter을 적용하면서 시작했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>
            org.springframework.web.filter.CharacterEncodingFilter
        </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
</filter>
 
<filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>
        
cs

*기본 web.xml에 encodingFilter를 적용한 모습*

 

이후에 로그인 페이지 구성을 위해 Spring Securtity filter을 적용했다.

1
2
3
4
5
6
7
8
9
<!-- Spring Security 필터 -->
     <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
cs

 

하지만 여기서 문제가 생겼다. Spring security filter를 적용하면 페이지가 로딩이 되지 않았다.

 

몇 시간을 구글링 한 결과로 답을 알아냈는데 아래와 같이 Spring security filter 이전에 encodingFilter를 씌워야 한다는 것.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    <!-- 인코딩 필터 --> 
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>
            org.springframework.web.filter.CharacterEncodingFilter
        </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
        
    <!-- Spring Security 필터 -->
     <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
cs

 

 

결론 : 여러분들은 저같이 기본적인걸로 시간 낭비 안 하셨으면 좋겠습니다ㅠㅠ

 

 

반응형