Spring Security忽略过滤器的路径

时间:2016-04-30 09:46:59

标签: java spring-security jwt

如何将Spring Security配置为对除相同级别中的白名单之外的所有请求使用自定义过滤器,例如“/ login”会跳过我的过滤器,但其他所有内容“/ **”都会通过过滤器。

作为一种解决方法,我可以使用不同的前缀,“/ secured / **”vs“/ whitelist / **”或忽略过滤器中列入白名单的前缀,但这似乎不是一个干净的解决方案。

我已经尝试使用@Order(1和2)设置两个配置,但它不起作用。

@EnableWebSecurity
public class SpringSecurityConfig {

    @Configuration
    @Order(1)
    @EnableGlobalMethodSecurity(securedEnabled = true)
    public static class JwsSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {

        @Autowired
        private StatelessAuthenticationFilter statelessAuthenticationFilter;

        @Override
        public void configure(WebSecurity web) throws Exception {
            web
                    .ignoring()
                    .antMatchers("/login");
        }

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .authorizeRequests()
                    .antMatchers("/**").authenticated()
                    .anyRequest().authenticated()
                    .and().addFilterBefore(statelessAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
        }

        @Override
        @Bean
        public AuthenticationManager authenticationManagerBean() throws Exception {
            return authenticationManager();
        }
    }
}

0 个答案:

没有答案