如何仅在受保护的端点上应用spring安全过滤器?

我具有以下Spring Security配置:

    httpSecurity

.csrf()

.disable()

.exceptionHandling()

.authenticationEntryPoint(unauthorizedHandler)

.and()

.sessionManagement()

.sessionCreationPolicy(SessionCreationPolicy.STATELESS)

.and()

.authorizeRequests()

.antMatchers("/api/**").fullyAuthenticated()

.and()

.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);

authenticationTokenFilterBean()甚至在不匹配的终端应用/api/**表现。我也尝试添加以下配置代码

@Override

public void configure(WebSecurity webSecurity) {

webSecurity.ignoring().antMatchers("/some_endpoint");

}

但这仍然不能解决我的问题。如何告诉Spring Security仅在与安全URI表达式匹配的端点上应用过滤器?谢谢

回答:

我有一个具有相同要求的应用程序,要解决此问题,我基本上将Spring Security限制为给定的ant match模式(使用antMatcher),如下所示:

http.antMatcher("/api/**").authorizeRequests() //

.anyRequest().authenticated() //

.and()

.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);

你可以阅读以下内容:http仅在与/api/**授权any requestauthenticated用户的ant模式匹配的请求上调用这些配置and add filter authenticationTokenFilterBean() before UsernamePasswordAuthenticationFilter。对于所有其他请求,此配置无效。

以上是 如何仅在受保护的端点上应用spring安全过滤器? 的全部内容, 来源链接: utcz.com/qa/414380.html

回到顶部