2009-02-17 13 views
26

Sto sviluppando un'applicazione con un front-end basato su Flex e un back-end Spring/Hibernate.Come ottengo un HttpServletRequest nei miei bean di primavera?

Per ottenere l'integrazione di Facebook funzionante nel modo in cui l'ho attualmente, ho bisogno di leggere i cookie impostati in javascript sul front-end sul back-end e fare qualche convalida durante l'accesso per vedere se l'utente sta tentando spoofare il suo login di Facebook.

Ciò sarebbe piuttosto semplice, ma non riesco a capire come ottenere HttpServletRequest. Sto usando una semplice Spring config di base (questa è la mia prima vera app di Spring, e ora ne ho abbastanza familiarità, ma ce n'è una che non ho mai visto)

Non sto usando Spring MVC o Spring WebFlow o qualcosa del genere. Posso ottenere il ServletContext, ma non ho ancora capito come ottenere la richiesta.

Qualsiasi aiuto?

risposta

69

Se FlexContext non è disponibile:

Soluzione 1: metodo all'interno (> = Primavera 2.0 richiesto)

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder 

     .getRequestAttributes()).getRequest(); 

Soluzione 2: all'interno di fagioli (! Probabilmente Primavera 3.0 per i fagioli singelton richiesti)

@Autowired 

private HttpServletRequest request; 
+0

È inoltre possibile utilizzare l'annotazione @Resource invece di Autowired. Non è necessario richiedere esplicitamente la sincronizzazione automatica, e sei vincolante per Spring un po 'meno. – pstobiecki

+2

Autowired ha 'boolean richiesto() default true;' – Sonny

11

Questo è un tipo di Flex/BlazeDS specifico, ma ecco la soluzione che ho trovato. Scusa se rispondere alla mia domanda è un passo falso.

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())); 
    } 

Funziona, ottengo i cookie. Il mio problema riguardava Spring: BlazeDS ce l'aveva. Probabilmente anche Spring lo fa, ma non so ancora come arrivarci.

Problemi correlati