2010-08-29 10 views
5

Nei miei graal applicazione, ho implementato l'interfaccia HttpSessionListener di ascoltare per la creazione di sessione come indicato di seguito:Come ottenere l'indirizzo IP quando viene creata una sessione?

class MyHttpSessionListener implements HttpSessionListener { 

    public void sessionCreated(HttpSessionEvent event) { 
     log.info "***************** Session created: id= ${event.getSession()?.id}" 
    } 
} 

Ora, vorrei registrare l'indirizzo IP che è responsabile della creazione della sessione .

Come posso farlo?

risposta

6

è possibile accedere al RequestContextHolder e ottenere il valore

String ipAddr = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()) 
      .getRequest().getRemoteAddr(); 
+0

Grazie mille. Funziona come un fascino – fabien7474

+6

Potremmo anche dire che questo fa parte del framework Spring. Queste classi non fanno parte delle specifiche JSF. – Mindwin

2

Per quanto ne so non è possibile utilizzare l'interfaccia HttpSessionListener.

È possibile ottenere e registrare l'indirizzo IP da "ServletRequest.getRemoteAddr()" ma non si ha accesso alla richiesta servlet da HttpSessionListener o da HttpSessionEvent.

L'idea migliore sarebbe disporre di un javax.servlet.Filter che ottiene l'indirizzo IP e lo imposta come attributo di sessione se non già presente. (Si potrebbe anche fare il logging se non già presente).

+0

Grazie per il suggerimento su come impostare il valore alla sessione, come 'HttpSession' è il solo l'istanza disponibile all'interno di un 'HttpSessionListener'. – asgs

2

È inoltre possibile utilizzare questa interfaccia nella vostra HttpSessionListener: ServletRequestListener È possibile implementare: requestInitialized() come questo.

@Override 
public void requestInitialized(ServletRequestEvent servletRequestEvent) { 
    this.request = (HttpServletRequest) servletRequestEvent.getServletRequest(); 
} 

è s lavorando bene, l'oggetto di richiesta può portare l'indirizzo a distanza, c'è un metodo per farlo

Problemi correlati