You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringFox迁移至springdoc openapi后Authorization请求头未正常发送的问题咨询

解决springdoc-openapi API密钥授权请求头不发送的问题

哎,我之前从SpringFox转springdoc的时候也踩过这个坑!你现在的问题核心是只定义了SecurityScheme,但没把它和API接口关联起来——Swagger UI虽然能显示授权输入框,但不知道该在哪些请求里带上这个头,所以点击Execute时自然不会自动添加。

你只需要做下面其中一步就能解决:

1. 全局给所有接口启用授权(推荐)

直接在@OpenAPIDefinition注解里添加security属性,关联你定义的SecurityScheme名称,这样所有接口都会自动带上Authorization请求头:

@Configuration
@OpenAPIDefinition(
    info = @Info(title = "My API", version = "v1"),
    // 关键:添加全局安全要求,绑定你定义的Authorization scheme
    security = @SecurityRequirement(name = "Authorization")
)
@SecurityScheme(
    name = "Authorization",
    type = SecuritySchemeType.APIKEY,
    in = SecuritySchemeIn.HEADER,
    description = "请输入你的API密钥" // 可以加个描述,提升用户体验
)
public class OpenApiConfig {
}

2. 给特定接口/Controller单独启用授权

如果不想全局启用,只需要在需要授权的Controller类或者单个方法上加上@SecurityRequirement注解即可:

@RestController
@RequestMapping("/orders")
public class OrderController {

    @GetMapping("/my")
    // 仅这个接口启用Authorization授权
    @SecurityRequirement(name = "Authorization")
    public ResponseEntity<List<Order>> getMyOrders() {
        // 业务逻辑实现
        return ResponseEntity.ok(new ArrayList<>());
    }
}

配置完之后再去Swagger UI测试,输入密钥点击Execute,就能看到Authorization请求头被正常发送了。

另外提个小补充:如果之后要切换成Bearer Token(比如JWT),只需要把@SecurityScheme的type改成SecuritySchemeType.HTTP,加上scheme = "bearer"和bearerFormat = "JWT"就行,核心逻辑和APIKEY是一致的。

内容的提问来源于stack exchange,提问作者Peter Kronenberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 17:07:27