Рекомендации по передаче HTTP-заголовков потокобезопасным способом - PullRequest
0 голосов
/ 04 апреля 2020

Желаемое поведение:

Существует приложение Spring Boot, в котором есть контроллер, на котором размещена конечная точка, которая будет получать данные (через вызов HTTP) через отдельную службу. Однако для этого потребуется передать токен Bearer из исходных заголовков в исходном запросе.

Текущая реализация:

A. Существует GenericFilter, который сохраняет заголовок «Authorization» в экземпляре компонента.

    @Component
public class exampleFilter extends OncePerRequestFilter {

    @Autowired
    private POJO pojo;


    @Override
    protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,
            FilterChain filterChain) throws ServletException, IOException {

        pojo.setAuthorization(httpServletRequest.getHeader("Authorization"));
        filterChain.doFilter(httpServletRequest, httpServletResponse);
    }
}

Проблема:

Поскольку значение Authorization хранится в компоненте, оно не является потокобезопасным.
По результатам онлайн-исследований, паттерн заключается в использовании переменной метода в методе класса "doGet ()" или "service ()" HTTPServlet; однако, это не сработало правильно для этой проблемы.

Является ли этот шаблон все еще правильным решением для этой проблемы? какие-либо предложения о том, что должно быть?

Заранее спасибо!

...