Cum pot obține un HttpServletRequest în fasole mea de primăvară?

voturi
28

Sunt în curs de dezvoltare o aplicație cu un front-end-Flex pe bază și un Spring / Hibernate back-end.

Pentru a obține integrarea Facebook de lucru în modul în care am luat-o în prezent, am nevoie pentru a citi cookie-urile setate în javascript pe front-end pe back-end și de a face unele de validare în timpul autentificării pentru a vedea dacă utilizatorul încearcă să spoof Facebook lui Logare.

Acest lucru ar fi destul de ușor, dar eu nu pot da seama cum să obțineți HttpServletRequest. Eu folosesc o configurare de primăvară destul de bază (aceasta este prima mea aplicație reală de primăvară, și eu sunt destul de familiarizat cu ea acum, dar sunt o mulțime de ea nu am mai uitat la.)

Nu folosesc Spring MVC sau Spring Webflow sau ceva de genul asta. Pot obține ServletContext, dar încă nu am dat seama cum să obțineți cererea.

Orice ajutor?

Întrebat 18/02/2009 la 00:13
sursa de către utilizator
În alte limbi...                            


5 răspunsuri

voturi
11

Aceasta este un fel de Flex / BlazeDS specifice, dar aici e soluția am venit cu. Ne pare rău dacă răspunde la întrebarea mea este un 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()));
    }

Acesta funcționează, am obține cookie-urile. Problema mea a fost în căutarea de a primăvară - BlazeDS avea. De primăvară, probabil, nu prea, dar eu încă nu știu cum să ajungi la ea.

Publicat 18/02/2009 la 00:40
sursa de către utilizator

voturi
75

Dacă FlexContext nu este disponibil:

Soluția 1: Metoda interior (> = Spring 2.0 necesar)

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder

        .getRequestAttributes()).getRequest();

Soluția 2: interior de fasole (probabil de primăvară 3.0 pentru fasole Singelton necesare!)

@Autowired

private HttpServletRequest request;
Publicat 25/11/2009 la 11:13
sursa de către utilizator

voturi
1

@ContextAdnotarea ( a se vedea răspunsurile la această întrebare: Ce face context adnotare din primăvară? ) Va face ca acesta să fie injectat pentru tine.

A trebuit să folosesc

@Context
private HttpServletRequest request;
Publicat 07/02/2016 la 12:36
sursa de către utilizator

voturi
2

@ Răspunsul eeezyy nu au de lucru pentru mine, cu toate că eu sunt, folosind Spring Boot (2.0.4), și poate să difere, dar o variație aici, în 2018 funcționează astfel:

@Autowired
private HttpServletRequest request;
Publicat 07/11/2018 la 16:01
sursa de către utilizator

voturi
0

acest lucru ar trebui să-l facă

((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getRequestURI();
Publicat 17/06/2019 la 22:21
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more