通过身份验证保护应用程序安全,并从类级别的请求标头解析用户名

时间:2019-04-24 19:18:22

标签: java spring spring-boot

我有一个包含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并将其用于类中的所有方法,因为我只需要它的用户名。

1 个答案:

答案 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
}