当前位置: 首页 > 知识库问答 >
问题:

springboot安全招摇springfox-boot-starter

皇甫雨石
2023-03-14

pom.xml

<!-- swagger -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

Spring Security配置

protected void configure(HttpSecurity httpSecurity) throws Exception {

        String[] SWAGGERS = {
                "/swagger/**",
                "/v3/**"
        };

        httpSecurity
                .authorizeRequests(expressionInterceptUrlRegistry ->
                        expressionInterceptUrlRegistry
                                // 放行 druid 页面
                                .antMatchers("/zhy-druid/**").permitAll()
                                .antMatchers(SWAGGERS).anonymous()
                                .anyRequest().authenticated()
                );

        httpSecurity
                .formLogin(httpSecurityFormLoginConfigurer ->
                        httpSecurityFormLoginConfigurer
                                .loginPage("/authentication")
                                .successHandler(accountAuthenticationSuccessHandler)
                                .failureHandler(accountAuthenticationFailureHandler)
                );

        httpSecurity
                .logout(httpSecurityLogoutConfigurer ->
                        httpSecurityLogoutConfigurer
                                .logoutUrl("/cancellation")
                                .logoutSuccessHandler(accountLogoutSuccessHandler)
                );

        httpSecurity
                .exceptionHandling(httpSecurityExceptionHandlingConfigurer ->
                        httpSecurityExceptionHandlingConfigurer
                                .authenticationEntryPoint(accountAuthenticationEntryPointHandler)
                                .accessDeniedHandler(accountAccessDeniedHandler)
                );

        httpSecurity
                .cors();

        httpSecurity
                .csrf()
                .disable();
    }

application-local.yml

springfox:
  documentation:
    enabled: true
    swagger-ui:
      base-url: /swagger

我得到这个结果。

无法呈现此定义提供的定义未指定有效的版本字段。

请注明有效的SwaggerOpenAPI版本字段。支持的版本字段是swagger: 2.0和与openapi: 3.0. n匹配的版本字段(例如,openapi: 3.0.0)。

共有1个答案

宗政唯
2023-03-14

Openapi是最新的库,建议用于spring boot应用程序。这是下一个版本的招摇。

在您的应用程序中为workopenapi添加以下代码。

pom.xml

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

Spring Security性配置为允许打开api url。

@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
    
    @Autowired
    private UserServiceImpl userServiceImpl;
    
    @Bean
    BCryptPasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
    
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.cors().and().csrf().disable()
                .authorizeRequests()
                    .antMatchers(SecurityConstants.SIGN_UP_URL).permitAll()
                    .antMatchers("/swagger-ui/**").permitAll()
                    .antMatchers("/v3/**").permitAll()
                    .antMatchers("/api-docs.html").permitAll()
                .anyRequest().authenticated()
                .and()
                .addFilter(new AuthorizationFilter(authenticationManager()))
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
    }
}

应用yml公司

springdoc:
  swagger-ui.path: /api-docs.html
 类似资料:
  • 我对使用SpringBoot和Springfox-boot-starter的swagger文档有一个问题。 我使用java.time.Instant java.util.Optio包裹 有没有办法让这个工作与可选的?感谢任何建议! Spring启动版本: Springfox-boot-starter版本

  • 我的pom.xml 招摇过市配置 服务器日志 它说映射: 但这些都不起作用(404): 如果我使用sping-fox较低版本,那么我将在我的日志中得到它已映射{[/v2/api-docs}],方法=[GET]。但是,我看不到在那里生成的任何json。

  • 我正在使用Swagger注释和SpringFox为我的REST API(使用Sprint Boot构建)生成Swagger规范。我正在用将返回的代码注释每个方法。例如: 然而,有些东西(我假设SpringFox)正在向每个API调用添加一个200响应代码,而不管它是否已定义。我知道我可以通过在每个方法中添加注释来删除此项,但a)这似乎是@ApiResponse定义的不必要重复,b)某些方法可能返回

  • 我正在使用springfox swagger2,它工作正常。 这只是一个基本的设置/配置,因为我对Swagger真的很陌生。 更新 如果在类中设置这个,我就可以访问。 但是如果我把它更改为,它就不会了,而且我会得到我设置的401错误: 依赖性(pom.xml): 安全配置类 MyAuthenticationEntryPoint 谢了!

  • 我有一个使用Springdoc(Swagger)的Spring Boot API。该API具有在标头中传递“apiKey”和“code”字段的安全性。我很难正确配置Swagger以在Swagger UI中启用身份验证功能。这是配置: 我知道这是不正确的,但不确定如何配置它。 感谢任何帮助。 尝试解决方案:从@indybee推荐: 这就是我要做的(不幸的是,当我测试一个endpoint时,它仍然没有

  • 目前我正在编写我的API文档,我决定用ReDoc来实现它。我的API使用Spring Boot构建..对于文档,我使用SWAGGER。一切都很好,但是我无法注释我的控制器来显示ReDoc文档右边的“响应样本”部分。我尝试在dto中添加示例,如: 这是我的控制器的外观: