feat: 新增共库模式下登录失败日志表及相关功能
- 新增登录失败日志表(共库多租户版),添加 tenant_id 列实现租户隔离 - 调整登录失败日志逻辑,仅记录触发账号锁定的事件 - 新增管理端接口功能,为登录失败日志补充实时锁定状态 - 更新测试用例适配共库模式下的租户过滤逻辑
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
-- 登录失败日志表(共库多租户版)。
|
||||
-- 背景:登录失败日志仅记录触发账号锁定的事件(见 session.go lockedNow 分支),
|
||||
-- 普通失败不再落库;锁定计数器存 Redis,im_login_lockouts 不再使用。
|
||||
-- 执行范围:每个租户业务库(共库模式即 tinode / meeting_im 库各执行一次)。
|
||||
-- 上游 scripts/IM-租户业务库初始化.sql 中的同名表无 tenant_id 列,勿用旧版执行。
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `im_login_failure_logs` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`tenant_id` bigint NOT NULL DEFAULT 0,
|
||||
`user_id` bigint DEFAULT NULL,
|
||||
`account_type` varchar(24) NOT NULL DEFAULT '',
|
||||
`account_hash` char(64) NOT NULL DEFAULT '',
|
||||
`account_mask` varchar(128) NOT NULL DEFAULT '',
|
||||
`failure_type` varchar(32) NOT NULL,
|
||||
`reason` varchar(96) NOT NULL DEFAULT '',
|
||||
`detail` varchar(500) NOT NULL DEFAULT '',
|
||||
`ip` varchar(64) NOT NULL DEFAULT '',
|
||||
`region` varchar(128) NOT NULL DEFAULT '',
|
||||
`device_id` varchar(255) NOT NULL DEFAULT '',
|
||||
`platform` varchar(32) NOT NULL DEFAULT 'unknown',
|
||||
`app_version` varchar(32) NOT NULL DEFAULT '',
|
||||
`user_agent` varchar(512) NOT NULL DEFAULT '',
|
||||
`risk_level` varchar(16) NOT NULL DEFAULT 'medium',
|
||||
`risk_action` varchar(24) NOT NULL DEFAULT 'audit_only',
|
||||
`request_id` varchar(64) NOT NULL DEFAULT '',
|
||||
`attempt_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`metadata` json DEFAULT NULL,
|
||||
`created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_im_login_failure_tenant_time` (`tenant_id`,`attempt_at` DESC,`id` DESC),
|
||||
KEY `idx_im_login_failure_account_time` (`account_hash`,`attempt_at` DESC,`id` DESC),
|
||||
KEY `idx_im_login_failure_user_time` (`user_id`,`attempt_at` DESC,`id` DESC),
|
||||
KEY `idx_im_login_failure_ip_time` (`ip`,`attempt_at` DESC,`id` DESC),
|
||||
KEY `idx_im_login_failure_type_time` (`failure_type`,`attempt_at` DESC,`id` DESC),
|
||||
KEY `idx_im_login_failure_request` (`request_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
Reference in New Issue
Block a user