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

如何通过Swagger生成的Java类获取Authorization头值?

获取Authorization头中Bearer令牌的方法

你可以通过以下几种方式在后端获取Authorization请求头:

方法1:使用@HeaderParam直接注入

在方法参数里添加@HeaderParam("Authorization")注解,直接获取整个Authorization头的值,之后再提取Bearer令牌部分:

@GET
@Produces({"application/json"})
@ApiOperation(
    authorizations = {@Authorization("bearer_auth")},
    tags = {"..."}
)
@ApiResponses({@ApiResponse(
    code = 200,
    message = "...",
    response = Response.class
)})
Response foo(@QueryParam("cursor") @ApiParam("cursor") String cursor, 
             @HeaderParam("Authorization") String authorizationHeader) {
    // 提取Bearer令牌,格式通常是"Bearer <token>"
    if (authorizationHeader != null && authorizationHeader.startsWith("Bearer ")) {
        String token = authorizationHeader.substring(7);
        // 这里进行令牌验证逻辑
    }
    // 其他业务逻辑
    return Response.ok().build();
}

方法2:通过HttpServletRequest获取

如果你的后端基于JAX-RS,可以注入HttpServletRequest对象,从中获取请求头:

import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.Context;

// ...

@GET
@Produces({"application/json"})
@ApiOperation(
    authorizations = {@Authorization("bearer_auth")},
    tags = {"..."}
)
@ApiResponses({@ApiResponse(
    code = 200,
    message = "...",
    response = Response.class
)})
Response foo(@QueryParam("cursor") @ApiParam("cursor") String cursor, 
             @Context HttpServletRequest request) {
    String authorizationHeader = request.getHeader("Authorization");
    if (authorizationHeader != null && authorizationHeader.startsWith("Bearer ")) {
        String token = authorizationHeader.substring(7);
        // 令牌验证逻辑
    }
    // 其他业务逻辑
    return Response.ok().build();
}

方法3:使用JAX-RS的HttpHeaders上下文对象

注入HttpHeaders,通过它获取请求头:

import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Context;

// ...

@GET
@Produces({"application/json"})
@ApiOperation(
    authorizations = {@Authorization("bearer_auth")},
    tags = {"..."}
)
@ApiResponses({@ApiResponse(
    code = 200,
    message = "...",
    response = Response.class
)})
Response foo(@QueryParam("cursor") @ApiParam("cursor") String cursor, 
             @Context HttpHeaders headers) {
    String authorizationHeader = headers.getHeaderString(HttpHeaders.AUTHORIZATION);
    if (authorizationHeader != null && authorizationHeader.startsWith("Bearer ")) {
        String token = authorizationHeader.substring(7);
        // 令牌验证逻辑
    }
    // 其他业务逻辑
    return Response.ok().build();
}

注意:提取令牌时要做好空值和格式校验,避免出现NullPointerException或格式错误导致的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:15:39