пятница, 6 февраля 2015 г.

Spring security + UTF-8

При использовании spring secutiry в связке с  spring web mvc НЕОБХОДИМО объявить фильтр CharacterEncodingFilter ДО конфигурации security - иначе ломается кодировка в запросах, русские буквы выглядят как кракозябры.

Решение в java config:

@Configuration
@EnableWebSecurity
public 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);
        
        http.authorizeRequests()
                .antMatchers("/admin/**").access("hasRole('"+UserRole.ROLE_ADMIN+"')")
                .and().formLogin().loginPage("/login").defaultSuccessUrl("/", false)
                .and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"));
.....
}
}

При этом в web.xml фильр описывать уже не требуется.

Комментариев нет:

Отправить комментарий