Как получить IP-адрес при создании сеанса? - PullRequest
5 голосов
/ 30 августа 2010

В моем приложении grails я реализовал интерфейс HttpSessionListener для прослушивания создания сеанса, как показано ниже:

class MyHttpSessionListener implements HttpSessionListener {

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

Теперь я хотел бы logIP-адрес, который отвечает за создание сеанса .

Как я могу это сделать?

Ответы [ 3 ]

9 голосов
/ 30 августа 2010

вы можете получить доступ к RequestContextHolder и получить значение

String ipAddr = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes())
           .getRequest().getRemoteAddr();
2 голосов
/ 13 октября 2011

Вы также можете использовать этот интерфейс в вашем HttpSessionListener: ServletRequestListener. Вы можете реализовать: requestInitialized () вот так.метод для этого

2 голосов
/ 30 августа 2010

Насколько я знаю, вы не можете использовать интерфейс HttpSessionListener.

Вы можете получить и зарегистрировать IP-адрес из «ServletRequest.getRemoteAddr ()», но у вас нет доступа к запросу сервлета из HttpSessionListener или из HttpSessionEvent.

Лучше всего иметь javax.servlet.Filter, который получает IP-адрес и устанавливает его как атрибут сеанса, если он еще не существует. (Вы также можете сделать запись, если она еще отсутствует).

...