Spring Security 6 - OpenApi 返回 HTTP 错误 403 *已修复

问题描述 投票:0回答:1

我刚刚开始学习Spring Security。我可以使用 Postman 访问它,但无法使用 OpenApi 访问它。可能是什么问题?在我更新并添加安全性之前它就可以工作。 Spring Boot 3.0.6 版本 Spring Security 第 6 版。 这是我的代码:

@Configuration
@EnableWebSecurity
public class SecurityConfig {
    @Bean
    public UserDetailsService userDetailsService(PasswordEncoder encoder){
        UserDetails admin = User.withUsername("msg")
                .password(encoder.encode("123"))
                .roles("ADMIN", "USER")
                .build();
        UserDetails user = User.withUsername("user")
                .password(encoder.encode("123"))
                .roles("USER")
                .build();
        return new InMemoryUserDetailsManager(admin, user);
    }

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
        return http.httpBasic()
                .and()
                .authorizeHttpRequests()
                .requestMatchers("/v3/api-docs/**", "/swagger-ui/**", "/swagger-ui.html").permitAll()
                //.requestMatchers("/users").authenticated()
                .requestMatchers(HttpMethod.POST,"/users/**").hasRole("USER")
                .requestMatchers("/users/**").hasRole("ADMIN")
                .and()
                .csrf().disable()
                .formLogin().disable()
                .build();
    }

    @Bean
    public PasswordEncoder passwordEncoder(){
        return new BCryptPasswordEncoder();
    }
}

pom.xml

   
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-ui</artifactId>
            <version>1.7.0</version>
        </dependency>
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-security</artifactId>
            <version>1.7.0</version>
        </dependency>

我后来添加了“springdoc-openapi-security”,因为它不起作用。但是添加之后还是不行。

OpenAPI 正在为所有请求发送 HTTP 403 错误。网址是http://localhost:9090/swagger-ui.html。

编辑*

        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
            <version>2.1.0</version>
        </dependency>

开放API新版本。这是Spring Boot 3.0支持的版本。当我改变它时,一切都固定了。

java spring spring-security openapi
1个回答
0
投票

对于 spring-boot v3 支持,请确保使用 springdoc-openapi v2

© www.soinside.com 2019 - 2024. All rights reserved.