Подтвердить что ты не робот

Как получить HttpServletRequest в моем spring beans?

Я разрабатываю приложение с интерфейсом на основе Flex и Spring/Hibernate.

Чтобы интеграция Facebook работала так, как у меня есть в настоящее время, мне нужно прочитать файлы cookie, установленные в javascript на передней панели в фоновом режиме, и выполнить некоторую проверку во время входа в систему, чтобы узнать, пытается ли пользователь подделать его в Facebook.

Это было бы довольно легко, но я не могу понять, как получить HttpServletRequest. Я использую довольно простой Spring config (это мое первое реальное приложение Spring, и теперь я хорошо знаком с ним, но там много чего я никогда не просматривал.)

Я не использую Spring MVC или Spring WebFlow или что-то в этом роде. Я могу получить ServletContext, но я еще не понял, как получить запрос.

Любая помощь?

4b9b3361

Ответ 1

Если FlexContext недоступен:

Решение 1: метод inside (> = требуется Spring 2.0)

HttpServletRequest request = 
        ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes())
                .getRequest();

Решение 2: внутри bean-компонента (поддерживается> = 2.5, требуется Spring 3.0 для bean-компонентов singelton!)

@Autowired
private HttpServletRequest request;

Ответ 2

Это своего рода Flex/BlazeDS, но вот решение, которое я придумал. Извините, если ответить на мой собственный вопрос - это faux pas.

    HttpServletRequest request = flex.messaging.FlexContext.getHttpRequest();

    Cookie[] cookies = request.getCookies();

    for (Cookie c:cookies)
    {
        log.debug(String.format("Cookie: %s, %s, domain: %s",c.getName(), c.getValue(),c.getDomain()));
    }

Он работает, я получаю файлы cookie. Моя проблема смотрела на Spring - у BlazeDS это было. Spring, вероятно, тоже, но я до сих пор не знаю, как добраться до него.

Ответ 3

Ответ @eeezyy у меня не сработал, хотя я использую Spring Boot (2.0.4), и он может отличаться, но вариант в 2018 году работает следующим образом:

@Autowired
private HttpServletRequest request;

Ответ 5

это должно сделать это

((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getRequestURI();