我正在尝试将 Swagger-UI 附加到我的项目中,但由于某种原因我无法访问其界面。
我遵循了官方指南+互联网上的一些其他指南。
当我尝试使用 GET 输入指南中提到的路径时,出现错误 403。
这就是我到目前为止所做的:
pom.xml
中: <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.1.0</version>
</dependency>
SecurityConfigurer
课程中:
private static final String[] AUTH_WHITE_LIST = {
"/v3/api-docs/**",
"/swagger-ui/**",
"/v2/api-docs/**",
"/swagger-resources/**"
};
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.csrf(csrf -> csrf.disable())
.authorizeHttpRequests((requests) -> requests
.requestMatchers(AUTH_WHITE_LIST).permitAll()
.requestMatchers("/auth/**").permitAll()
.requestMatchers("/users/createUser").permitAll()//todo fix in the future
.requestMatchers("/users/getProfile").permitAll()//todo fix in the future
.requestMatchers("/users/**").hasRole("ADMIN")
.requestMatchers("/contacts/**").hasRole("ADMIN")
.anyRequest().authenticated()
);
http.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class);
return http.build();
}
这些是我的 spring 依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>3.1.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
<version>3.1.1</version>
</dependency>
您可以尝试将springdoc升级到2.2.0版本(
org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0
)。
我认为你有 spring-boot 3.1 和 springdoc 2.1 的兼容性问题。根据 springdoc 发行说明,他们在 2.2.0 版本中将 spring boot 升级到 3.1 版本(https://github.com/springdoc/springdoc-openapi/releases/tag/v2.2.0)。
您还可以从安全检查中排除
/error
端点 (.requestMatchers("/error").permitAll()
)。我认为 Spring 正在尝试重定向到此页面(由于 404 错误),但如果没有身份验证,它无法显示错误。