Hvordan får jeg en HttpServletRequest i min våren bønner?

stemmer
29

Jeg utvikler en app med en Flex-baserte front end og en Spring / Hibernate back-end.

For å få Facebook integrasjon jobbe på den måten jeg har det for tiden, jeg trenger å lese cookies satt i javascript på fronten på back-end og gjøre noen validering når du logger inn for å se om brukeren forsøker å forfalske sin Facebook Logg Inn.

Dette ville være ganske enkelt, men jeg kan ikke finne ut hvordan du får HttpServletRequest. Jeg bruker en ganske grunnleggende Spring config (dette er min første ordentlige Spring app, og jeg er ganske kjent med det nå, men det er mye å det har jeg aldri sett på.)

Jeg bruker ikke Spring MVC eller Spring WebFlow eller noe sånt. Jeg kan få ServletContext, men jeg har ennå ikke funnet ut hvordan du får forespørsel.

Noe hjelp?

Publisert på 17/02/2009 klokken 23:13
kilden bruker
På andre språk...                            


5 svar

stemmer
11

Dette er slags Flex / BlazeDS bestemt, men her er løsningen jeg har kommet opp med. Beklager hvis du svarer på mitt eget spørsmål er en 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()));
    }

Det fungerer, jeg får kapsler. Mitt problem var ute for å Spring - BlazeDS hatt det. Spring gjør trolig også, men jeg fortsatt ikke vet hvordan de skal få til det.

Svarte 17/02/2009 kl. 23:40
kilden bruker

stemmer
77

Hvis FlexContext ikke er tilgjengelig:

Løsning 1: innvendig metode (> = 2,0 Spring nødvendig)

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder

        .getRequestAttributes()).getRequest();

Løsning 2: inne bean (sannsynligvis Spring 3.0 for singelton bønner nødvendig!)

@Autowired

private HttpServletRequest request;
Svarte 25/11/2009 kl. 10:13
kilden bruker

stemmer
1

Den @Contextannotering (se svar på dette spørsmålet: Hva gjør sammenheng merknad gjøre i Spring? ) Vil føre til at det å bli injisert for deg.

Jeg måtte bruke

@Context
private HttpServletRequest request;
Svarte 07/02/2016 kl. 12:36
kilden bruker

stemmer
2

@ Eeezyy svar fungerte ikke for meg, selv om jeg bruker Spring Boot (2.0.4), og det kan variere, men en variasjon her i 2018 fungerer slik:

@Autowired
private HttpServletRequest request;
Svarte 07/11/2018 kl. 16:01
kilden bruker

stemmer
0

Dette bør gjøre det

((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getRequestURI();
Svarte 17/06/2019 kl. 22:21
kilden bruker

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