我有一个包含10个控制器的Web应用程序。每个控制器代表一个端点。每个控制器都有各种API操作。我对API方法使用了基本身份验证。我在这些方法中使用了@RequestHeader来从中获取标头和解析器用户名。 我想知道是否可以在类级别获取标头,并为Controller类中的所有方法提供标头。
我试图在类级别使用@RequestHeader作为实例变量,但无法解析。
@RestController
@RequestMapping("client")
@Api(value="client")
@Validated
public class ClientRestController {
@GetMapping
@ApiOperation(value = "Client Search", authorizations = {@Authorization (value="basicAuth")})
public ResponseEntity<ClientSearchResponse> getClients(
@RequestHeader HttpHeaders httpHeaders,
//code to use httpHeaders
}
}
我希望能够在控制器级别共享httpHeaders并将其用于类中的所有方法,因为我只需要它的用户名。
答案 0 :(得分:0)
我能够使用HandlerInterceptor获得所需的标头。 我的问题是,在此类中使用实例变量headerMap是否安全?
我正在将值从headerMap传递给服务类,在处理并发请求时安全吗?
@Component
public class RestRequestInterceptor implements HandlerInterceptor {
private Map<String,String> headerMap;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
// pre-handle logic, set header map from request.
}
// other @Override methods
}