首页 > 所有文章 > 行业 >文章详情

java 获取真实ip(js获取客户端ip地址的方法)

时间:2023-10-27 16:00:47 浏览量:39

在登录模块,我们经常要记录登录日志,其中比较重要的信息有ip地址和ip归属地,像我们公司开发的产品会提供给用户试用,因为我们做的是无人机应用方向的,即使试用也会产生费用,因为我们很多功能一旦用了就会消耗我们大量的资源,所以为了防止客户在试用时恶意传播账号,我们必须要记录用户的登录ip以及归属地,一旦遇到恶意传播的,轻则通知,重则警告,甚至不予试用,终止合作。

本文我将从我们的系统中划分出来一个简单的小功能:登录日志。

让我们直接开始!

因为本身系统很庞大,加上代码的隐私性,我这边不会介绍非常多的属性,不过我能保证的是,代码你抄上去肯定能用。

按照开发流程,首先肯定是数据库的设计,我这边直接给出数据库建表语句:

在建表前,请保证你的数据库是创建好的,这个前提有点搞笑了。

由表可以看到,我们创建了login_log表,即登录日志表,字段名有id(主键)、name(登陆人姓名)、ip(登录ip)、ip_attribution(ip归属地信息)、create_time(创建时间)。

在真实的企业环境中,登录日志肯定远远不止这些,我是从我们的表中挑出了最基本的字段,像ip所属经纬度,因为需要调用第三方服务,我这边没有展示,当然市面上也有开源的根据ip获取经纬度的库,只不过不准确,想要准确还是要购买第三方服务。

我选用的框架是:

还有其他基础的到时候报红的时候自行解决。

跟ip归属地相关的依赖:

跟加载ip归属地数据库文件的依赖:

LoginLogEntity:

LoginLogMapper:

ILoginLogService:

LoginLogServiceImpl:

IpUtils:

上诉代码中提到了ip2region.db文件,这个文件需要放到resources目录下:

ip2region.db文件我放在网盘中,大家可以按需下载:

点击下载即可:

这个类就使用到了以上所有的准备代码:

UserController:

以上代码被我删减了好多,其实大家在使用的时候,值需要把下面这段代码摘出来放到自己的测试代码中即可:

我们用swagger测试一下接口:

测试成功后,我们看下数据库:

成功记录了ip信息,在真实的企业环境中,你也再增加一些字段。

至此代码全部演示完毕。

本文主要介绍了如何在登录接口增加登录日志的记录,文中的代码大家可以参考,有任何问题可以在下方评论区与我讨论,最后感谢您的阅读,您的点赞和转发就是我不断创作的动力!