spring - 避免在 SecurityConfigurer 适配器中调用 swagger URL - Spring boot security
问题描述
我的整个配置看起来像这样,已尝试使用过滤器进行以下配置,但无法忽略总是发生的 swagger auth。如何避免
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SeqConfiguration extends WebSecurityConfigurerAdapter {
private final SampleConfigurer sampleConfigurer;
@Autowired
public SecurityConfiguration(SampleConfigurer sampleConfigurer) {
this.sampleConfigurer= sampleConfigurer;
}
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/api-docs/", "/swagger-ui/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().authorizeRequests()
.anyRequest().authenticated().and().apply(sampleConfigurer);
}
}
@Component
public class SampleConfigurer extends SecurityConfigurerAdapter<DefaultSecurityFilterChain, HttpSecurity> {
private final SampleTokenFilter sampleTokenFilter;
public SampleConfigurer(SampleTokenFilter sampleTokenFilter) {
this.sampleTokenFilter= sampleTokenFilter;
}
@Override
public void configure(HttpSecurity builder) throws Exception {
builder.addFilterBefore(sampleTokenFilter, UsernamePasswordAuthenticationFilter.class);
}
}
@Component
public class SampleTokenFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
... this is getting called even for swagger.... How to avoid this.
}
}
问题:
- SampleTokenFilter dofilter 方法甚至被调用 swagger ui url
- 如何仅为招摇**跳过过滤器身份验证?
解决方案
只需在您的过滤器中添加一个检查
if(request.getServletPath().contains("/swagger-ui")){
filterChain.doFilter(request, response);
}
推荐阅读
- php - 如何从自定义表单编辑 cutsom Wordpress 数据库
- android - android UI在读取数据时被冻结和线程阻塞
- sql - 按滑动时间段聚合数据
- ruby - 如何在 squib 中生成一张 A4 大小的单卡?
- flutter - 如何在颤动中将图像文件转换为资产图像?
- linux - 编写一个命令在 linux 的不同行中显示文本文件名及其大小
- terraform - 使用 Terraform 将 NIC 附加到 Azure 中正在运行的 VM
- java - Opentememetry Zuul 集成
- python - 对源自循环的多个线程进行排队的最安全方法是什么?
- javascript - echart 雷达图轴标签