Java 通过Spring安全筛选器排除对URL的请求
我有一个Spring启动应用程序和一个自定义身份验证过滤器。应用程序有一个URL“/”,我希望避免运行任何Spring安全过滤器(包括身份验证和授权),包括我的自定义过滤器 我不想将Java 通过Spring安全筛选器排除对URL的请求,java,spring,spring-security,Java,Spring,Spring Security,我有一个Spring启动应用程序和一个自定义身份验证过滤器。应用程序有一个URL“/”,我希望避免运行任何Spring安全过滤器(包括身份验证和授权),包括我的自定义过滤器 我不想将WebSecurity配置为忽略此URL,因为我还想应用其他一些Spring安全功能,我的理解是使用: webSecurityBuilder.ignoring().antMatchers("/"); 将阻止所有Spring安全功能在此URL上运行 有没有办法使用HttpSecurity来实现这一
WebSecurity
配置为忽略此URL,因为我还想应用其他一些Spring安全功能,我的理解是使用:
webSecurityBuilder.ignoring().antMatchers("/");
将阻止所有Spring安全功能在此URL上运行
有没有办法使用HttpSecurity来实现这一点
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private CustomAuthenticationFilter customAuthFilter;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.antMatcher("/").
anonymous().and().authorizeRequests()
.antMatchers("/", "/index.html").permitAll()
.anyRequest().authenticated();
http.addFilterBefore(customAuthFilter, UsernamePasswordAuthenticationFilter.class);
}
这就是我到目前为止所拥有的,但由于某种原因,当我导航到“/”时,我仍然会点击我的自定义过滤器。以下是解决方案。摘要是您应该定义两个顺序不同的WebSecurity配置适配器。请试一试。 下面的代码是从那里复制的
@Configuration
@Order(1)
public class OnlyHeadersConfig extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) {
http
.antMatchers("/special/endpoints/**")
.authorizeRequests((authz) -> authz.anyRequest().permitAll())
.anonymous();
}
}
@Configuration
@Order(2)
public class MainSecurityConfig extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) {
http
.authorizeRequests(authz -> authz.anyRequest().authenticated())
.addFilterAt(new MyCustomFilter(), UsernamePasswordAuthenticationFilter.class);
}
}
我做了一个测试,证明它是正确的