目录

Spring Security 配置 ignoring 不生效的问题

遇到的问题

给 Spring Security 加上了一个 filter,配置了 ignoring 但是,filter 还是会拦截到 ignoring 的路径,导致 ignoring 不生效。

问题代码

@Bean
private InjectResourceSecurityFilter mySecurityFilter() throws Exception {
    return new InjectResourceSecurityFilter(securityMetadataSource,
            accessDecisionManager, authenticationManagerBean());
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
            .addFilterBefore(mySecurityFilter(), InjectResourceSecurityFilter.class)
            .authorizeRequests()
            .antMatchers("/static/**").permitAll()
            .antMatchers("/index.html", "/").permitAll()

            .anyRequest().authenticated()
            .and()
            .csrf().disable();
}

@Override
public void configure(WebSecurity web) throws Exception {
    super.configure(web);
    web.ignoring()
            .antMatchers("/static/**", "/index.html",
                    "/favicon.ico", "/");
}

解决问题

通过 Google 找到在 stackoverflow上的一个回答 stackoverflow 上说去掉 filter 上的 Component 注解就好,由于我在这里写的是 @Bean,所以把@Bean 给去掉,解决 ignoring 不生效的问题。