我们需要在首次读取请求属性的过滤器之前添加CharacterEncodingFilter。有securityFilterChain(在metrica过滤器之后排名第二),我们可以在其中添加过滤器。读取属性的第一个过滤器(在安全链内部)是CsrfFilter,因此我们将CharacterEncodingFilter放在它之前。
简短的解决方案是:
@Configuration@EnableWebMvcSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { CharacterEncodingFilter filter = new CharacterEncodingFilter(); filter.setEncoding("UTF-8"); filter.setForceEncoding(true); http.addFilterBefore(filter,CsrfFilter.class); //rest of your pre }//rest of your pre}


