尽管我的 REST 端点有这个额外的配置:
@Configuration
@Order(1)
public static class RestSecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf(csrf -> csrf.ignoringRequestMatchers(new AntPathRequestMatcher("/api/**")))
// .securityMatcher("/api/**")
.authorizeHttpRequests((authz) -> authz
.requestMatchers(antMatcher("/api/**")).permitAll()
);
return http.build();
}
@Bean(name = "mvcHandlerMappingIntrospector")
public HandlerMappingIntrospector mvcHandlerMappingIntrospector() {
return new HandlerMappingIntrospector();
}
}
使用 @Order(1) 和为前端扩展 VaadinWebSecurity 的安全配置,我在邮递员请求上得到此响应。
我已经尝试了在 Vaadin 论坛和 Stack Overflow 上找到的所有内容,但我无法绕过这个回复。另外,在 Vaadin 的 SecurityConfig 中添加 /api/** 的 requestmatchers 也没有帮助。
一些附加信息: 我的后端使用 Webflux,Spring Boot v3.2.0。
你们中有人有其他想法吗,我的项目已经被这个问题阻止了两天了。
这不是安全问题,而是 Vaadin 本身的问题。
仔细看看结果:
如果你不想对抗这个,你要么把瓦丁从 根:
vaadin.urlMapping=/my_mapping/*
https://vaadin.com/docs/latest/integrations/spring/configuration#using-spring-boot-properties
或者您可以(自 23.3 起)从 Vaadin servlet 中排除要处理的 URL:
可以使用 vaadin.exclude-urls 属性以逗号分隔字符串的形式配置不应由 Vaadin servlet 处理的 URL 模式列表。
# application.properties vaadin.exclude-urls=/swagger-ui/**,/custom-service/**
https://vaadin.com/docs/v23/integrations/spring/configuration#prevent-handling-of-specific-urls