让用户IP登录



我当前设置了一个Web项目,基于表格的JDBC Realm Authentication在Apache Tomcat 8.0服务器上设置了验证。

我想使用httpservletrequest类存储将用户的IP地址存储到数据库中。

在我的Web应用程序中我将在哪里(即在什么操作之后)添加此功能?

我正在使用JSP/Servlet,Tomcat和Mysql。

谢谢!

您可以为此使用servlet过滤器。Servlet过滤器可用于拦截传入的HTTP Servlet请求,并对请求或记录条目进行任何操作。

请注意,Tomcat还具有默认情况下的访问日志,其中包含所有HTTP请求,其状态,IP和用户名(如果有)。这是一个例子。

192.168.0.47 - - [27/Nov/2017:07:18:07 -0600] "GET /example/module?wsdl HTTP/1.1" 200 3122
192.168.0.47 - - [27/Nov/2017:07:18:07 -0600] "POST /otherapp/service HTTP/1.1" 200 251
fe80:0:0:0:fc36:e3bb:5bc4:abce%14 - asm-admin [27/Nov/2017:07:18:08 -0600] "POST /otherapp/HEARTBEAT/?v-uiId=0 HTTP/1.1" 200 -
fe80:0:0:0:fc36:e3bb:5bc4:abce%14 - asm-admin [27/Nov/2017:07:18:18 -0600] "POST /otherapp/HEARTBEAT/?v-uiId=0 HTTP/1.1" 200 -
fe80:0:0:0:fc36:e3bb:5bc4:abce%14 - asm-admin [27/Nov/2017:07:18:28 -0600] "POST /otherapp/HEARTBEAT/?v-uiId=0 HTTP/1.1" 200 -

成功登录后,您可以从请求和过程中获取用户名和IP地址。我认为,挑战只是在登录后立即抓住它,因为基于tomcats的登录几乎是透明的。我通过将用户名保存在会话对象中并仅保存数据来解决,如果这些值尚未在会话中。可能您必须考虑一下会议可能到期。

最新更新