相关疑难解决方法(0)

Springdoc GroupedOpenApi 不遵循使用 OperationCustomizer 设置的全局参数

用于GroupedOpenApi定义 API 组时,添加到每个端点的通用参数集不存在于参数列表中。下面是各自的代码

@Bean
public GroupedOpenApi v1Apis() {
    return GroupedOpenApi.builder().group("v1 APIs")
            // hide all v2 APIs
            .pathsToExclude("/api/v2/**", "/v2/**")
            // show all v1 APIs
            .pathsToMatch("/api/v1/**", "/v1/**")
            .build();
}
Run Code Online (Sandbox Code Playgroud)

以及将标准标头添加到所有端点的类

@Component
public class GlobalHeaderAdder implements OperationCustomizer {
    @Override
    public Operation customize(Operation operation, HandlerMethod handlerMethod) {
        operation.addParametersItem(new Parameter().$ref("#/components/parameters/ClientID"));
        operation.addSecurityItem(new SecurityRequirement().addList("Authorization"));
        List<Parameter> parameterList = operation.getParameters();
        if (parameterList!=null && !parameterList.isEmpty()) {
            Collections.rotate(parameterList, 1);
        }
        return operation;
    }
}
Run Code Online (Sandbox Code Playgroud)

实际产量

实际产量

预期输出

预期输出

解决方法

添加要在应用程序属性文件中包含/排除的路径可以解决该错误。但代码级别的一些东西将非常感激。

spring-boot springdoc springdoc-openapi-ui

7
推荐指数
1
解决办法
8686
查看次数

Spring安全 - @PreAuthorize无法正常工作

我在使用@PreAuthorize注释时遇到了问题.即使我的用户不拥有所请求的角色,我的安全方法也会被执行.

我的控制器:

@Controller
@RequestMapping("/stats/distributions")
public class DistributionStatsController {

    @PreAuthorize("hasAnyAuthority('AK_LOCAL_DIST_INT', 'AK_ADMIN')")
    @RequestMapping(method = RequestMethod.POST, consumes = "application/json; charset=utf-8", 
        produces = "application/json; charset=utf-8")
    public @ResponseBody List<DistributionStatsResource> filter(@RequestBody DistributionStatsResource resource,  
           @RequestParam(required = false, value = "documentId") Long documentId, 
           @RequestParam(required = false, value = "distStatus") EnumDistributionStatus distributionStatus, 
           Pageable pageable, HttpServletRequest request) {
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的spring安全配置:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    /** Defines the AuthenticationManager/providers. */
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(preAuthenticatedAuthenticationProvider());
    }

    @Override …
Run Code Online (Sandbox Code Playgroud)

java spring spring-security

4
推荐指数
1
解决办法
5061
查看次数