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信息,在真实的企业环境中,你也再增加一些字段。
至此代码全部演示完毕。
本文主要介绍了如何在登录接口增加登录日志的记录,文中的代码大家可以参考,有任何问题可以在下方评论区与我讨论,最后感谢您的阅读,您的点赞和转发就是我不断创作的动力!