gpt4 book ai didi

java - Spring webSecurity.ignoring() 不会忽略自定义过滤器

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:31:37 27 4
gpt4 key购买 nike

我在我的 Spring 4 MVC + Security + Boot 项目中设置了一个自定义身份验证过滤器。过滤器的工作很好,现在我想禁用某些 URI 的安全性(如 /api/**)。这是我的配置:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{
@Override
public void configure(WebSecurity webSecurity) throws Exception {
webSecurity.ignoring().antMatchers("/api/**");
}

@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.addFilterBefore(filter, BasicAuthenticationFilter.class);
}
}

不幸的是,当我调用 /api/... 下的资源时,过滤器仍然是链接的。我在我的过滤器中添加了 println 并且它会在每次调用时写入控制台。你知道我的配置有什么问题吗?

更新

过滤代码:

@Component
public class EAccessAuthenticationFilter extends RequestHeaderAuthenticationFilter {

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("FILTER");
if(SecurityContextHolder.getContext().getAuthentication() == null){
//Do my authentication stuff
PreAuthenticatedAuthenticationToken authentication = new PreAuthenticatedAuthenticationToken(user, credential, authorities);
SecurityContextHolder.getContext().setAuthentication(authentication);
}
super.doFilter(request, response, chain);
}

@Override
@Autowired
public void setAuthenticationManager(AuthenticationManager authenticationManager) {
super.setAuthenticationManager(authenticationManager);
}

}

最佳答案

删除类 EAccessAuthenticationFilter 上的@Component,像这样:

@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.addFilterBefore(new EAccessAuthenticationFilter(), BasicAuthenticationFilter.class);
}

https://github.com/spring-projects/spring-security/issues/3958

关于java - Spring webSecurity.ignoring() 不会忽略自定义过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39152803/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com