修复(chat): 新增真实 IP 获取中间件及重构用户 IP 轨迹追踪逻辑
- 新增 CloudflareProxies 前置中间件,强制解析 CDN 透传的 CF-Connecting-IP 与 X-Real-IP 并在底层接管,修复 Nginx 代理造成的全局 IP 同化 (127.0.0.1) 问题 - 修改 User 模型,新增 migration 以补全真正的 previous_ip 储存通道 - 修改 AuthController 登录逻辑,在覆写 last_ip 前实现向 previous_ip 的自动历史快照备份 - 修改 UserController API 返回逻辑,实现 first_ip、last_ip(上次)以及 login_ip(本次)的三轨分离 - 更新 user-actions.blade.php 管理员视野面板,同步增加并校验“首次IP”、“上次IP”、“本次IP”三级字段映射的准确性
This commit is contained in:
@@ -83,8 +83,10 @@ class UserController extends Controller
|
||||
// 拥有封禁IP(level_banip)或踢人以上权限的管理,可以查看IP和归属地
|
||||
$levelBanIp = (int) Sysparam::getValue('level_banip', '15');
|
||||
if ($operator && $operator->user_level >= $levelBanIp) {
|
||||
$data['last_ip'] = $targetUser->last_ip;
|
||||
// last_ip 在每次登录时更新,即为用户最近一次登录的 IP(本次IP)
|
||||
$data['first_ip'] = $targetUser->first_ip;
|
||||
// last_ip 目前定义为『上次登录IP』(取数据库 previous_ip)
|
||||
$data['last_ip'] = $targetUser->previous_ip;
|
||||
// login_ip 目前定义为『本次登录IP』(取数据库 last_ip)
|
||||
$data['login_ip'] = $targetUser->last_ip;
|
||||
|
||||
// 解析归属地:使用 ip2region 离线库,直接返回原生中文(省|市|ISP)
|
||||
|
||||
Reference in New Issue
Block a user