代码之家  ›  专栏  ›  技术社区  ›  fabien7474 Jan Tchärmän

创建会话时如何获取IP地址?

  •  5
  • fabien7474 Jan Tchärmän  · 技术社区  · 15 年前

    在我的 格雷斯 应用程序,我已经实现了接口 HttpSessionListener 要侦听会话创建,请执行以下操作:

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

    现在,我想 记录负责创建会话的IP地址 .

    我该怎么做?

    3 回复  |  直到 13 年前
        1
  •  8
  •   Aaron Saunders    15 年前

    您可以访问requestContextHolder并获取值

    String ipAddr = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes())
               .getRequest().getRemoteAddr();
    
        2
  •  2
  •   Cristian Vat    15 年前

    据我所知,您不能使用httpsessionListener接口。

    您可以从“servlet request.getRemoteAddr()”获取并记录IP地址,但您没有从httpsessionListener或httpsessionEvent访问servlet请求的权限。

    最好是有一个javax.servlet.filter,它获取IP地址并将其设置为会话属性(如果还没有)。(如果不存在,也可以进行日志记录)。

        3
  •  2
  •   Pierre-Olivier Pignon    13 年前

    也可以在httpsessionListener:servletrequestListener中使用此接口 您可以这样实现:requestInitialized()。

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

    工作很好,请求对象可以给你远程地址,有一个M_