Hoe krijg ik een HttpServletRequest in mijn voorjaar bonen?

stemmen
28

Ik ben het ontwikkelen van een app met een Flex-gebaseerde front-end en een Spring / Hibernate back-end.

Om Facebook-integratie werkend te krijgen in de manier waarop ik heb het momenteel heb, moet ik de in Javascript op de front-end op de back-end cookies lezen en doe wat validatie tijdens het inloggen om te zien of de gebruiker probeert te zijn Facebook spoofen Log in.

Dit zou vrij gemakkelijk zijn, maar ik kan niet achterhalen hoe de HttpServletRequest krijgen. Ik gebruik een vrij eenvoudig Spring config (dit is mijn eerste echte Spring app, en ik ben redelijk bekend is met het nu, maar er is veel om het te Ik heb nog nooit in gekeken.)

Ik maak geen gebruik van Spring MVC of Spring WebFlow of iets dergelijks. Ik kan het ServletContext te krijgen, maar ik heb nog niet bedacht hoe het verzoek te krijgen.

Alle hulp?

De vraag is gesteld op 18/02/2009 om 00:13
bron van user
In andere talen...                            


5 antwoorden

stemmen
11

Dit is een soort van Flex / BlazeDS specifiek, maar hier is de oplossing die ik heb verzinnen. Sorry als antwoord op mijn eigen vraag is een 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()));
    }

Het werkt, krijg ik de koekjes. Mijn probleem was op zoek naar Spring - BlazeDS had. Spring doet waarschijnlijk ook, maar ik weet nog steeds niet hoe er te komen.

antwoordde op 18/02/2009 om 00:40
bron van user

stemmen
75

Als FlexContext niet beschikbaar is:

Oplossing 1: binnen methode (> = Spring 2.0 vereist)

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder

        .getRequestAttributes()).getRequest();

Oplossing 2: binnen boon (waarschijnlijk Spring 3.0 voor singelton bonen verplicht!)

@Autowired

private HttpServletRequest request;
antwoordde op 25/11/2009 om 11:13
bron van user

stemmen
1

De @Contextannotatie (zie de antwoorden op deze vraag: Wat doet context annotatie doen in het voorjaar? ) Wordt, zal deze worden geïnjecteerd voor u.

Ik moest gebruiken

@Context
private HttpServletRequest request;
antwoordde op 07/02/2016 om 12:36
bron van user

stemmen
2

@ Antwoord eeezyy's werkte niet voor mij, maar ik ben met behulp van Spring Boot (2.0.4) en het kan verschillen, maar een variatie hier in 2018 werkt als volgt:

@Autowired
private HttpServletRequest request;
antwoordde op 07/11/2018 om 16:01
bron van user

stemmen
0

Dit zou het moeten doen

((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getRequestURI();
antwoordde op 17/06/2019 om 22:21
bron van user

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