系统级用户登录 / 登出日志管理设计方案
目标:构建一套系统级、安全可审计、可追溯的用户登录 / 登出日志管理能力,同时兼顾管理员审计与普通用户自查两个视角,支持安全分析、合规审计和风险溯源。
一、建设目标
- 统一记录所有用户的登录 / 登出行为
- 支持安全审计与异常行为分析
- 提供清晰的用户侧可视化登录历史
- 可支撑后续风控、异常告警、设备管理扩展
核心关键词:
- 可追责
- 可回溯
- 可分析
- 可扩展
二、整体架构说明
日志触发点
- 登录成功:UserController#login
- 登录失败(建议增强):login 失败也应记录
- 登出:新增 UserController#logout
- 会话超时自动失效(可选增强)
统一日志流程
用户操作 → 登录/登出接口 → 日志服务 → 登录日志表
三、数据库设计
新增表:sys_user_login_log
必须字段(继承基础规范)
id bigint(20) PK 自增
status tinyint(4) 状态
create_time datetime(3) 创建时间
update_time datetime(3) 更新时间
creator_id bigint(20) 创建人
updater_id bigint(20) 修改人
delete_flag tinyint(4) 逻辑删除标识
业务扩展字段设计
| 字段 | 类型 | 说明 |
|---|---|---|
| user_id | bigint | 用户ID |
| username | varchar(100) | 用户名 |
| login_type | varchar(16) | 登录方式(账号密码/邮箱验证码/第三方) |
| operation_type | varchar(16) | 操作类型:登录/登出 |
| login_status | varchar(16) | 登录状态:成功/失败 |
| logout_type | varchar(16) | 登出类型:主动/超时/强制 |
| ip_address | varchar(64) | 登录IP |
| device_type | varchar(50) | 设备类型 |
| browser | varchar(100) | 浏览器信息 |
| os | varchar(100) | 操作系统 |
| location | varchar(100) | 地理位置 |
| session_id | varchar(128) | 会话标识 |
| user_agent | text | 浏览器完整UA |
| remark | varchar(255) | 备注信息 |
枚举定义合适的对应的英文。
推荐索引:
- idx_user_id
- idx_create_time
- idx_ip_address
- idx_login_status
四、菜单设计
管理员视角
路径:
安全审计 → 登录日志管理
入口逻辑:
- 仅超级管理员 / 安全管理员可见
- 参考 /rbac/users 风格
用户视角
路径:
头像下拉 → 登录记录
位置:
- 与【账户设置】同级,下方
- 风格参考 /user/apikey-management
五、管理员页面设计
页面定位
名称:登录日志管理 角色:安全审计中心
页面布局
顶部:搜索区
中部:日志列表
底部:分页
侧边:日志详情抽屉
搜索条件
- 用户名
- 用户ID
- IP地址
- 操作类型(登录/登出)
- 登录状态
- 时间范围
- 设备类型
- 浏览器
- 地区
列表字段
| 字段 | 说明 |
|---|---|
| 用户名 | |
| 操作类型 | 登录 / 登出 |
| 状态 | 成功 / 失败 |
| IP地址 | |
| 地理位置 | |
| 设备 | |
| 浏览器 | |
| 登录时间 | |
| 会话ID | |
| 操作 |
操作按钮
- 查看详情
- 风险标记
- 加入黑名单
- 导出CSV
详情抽屉设计
分区展示:
- 基础信息
- 设备指纹
- 网络信息
- 行为轨迹
六、用户页面设计
页面名称
我的登录记录
UI风格
- 卡片式时间轴
- 强视觉识别
- 时间维度清晰
展示信息
- 登录时间
- 登录地点
- IP地址
- 设备信息
- 是否为当前会话
- 是否异常
交互设计
- 支持时间筛选
- 支持只看异常
- 点击查看详情
- 可一键下线历史设备
示意结构:
[设备] Windows Chrome
📍 东京
🕒 2025-11-23 13:20
状态:当前登录
[下线该设备]
七、新增 logout 流程设计
后端流程
用户点击退出 → 调用 logout 接口 →
更新 session 状态 → 写入登出日志 → 清除 token
日志记录逻辑
| 场景 | operation_type | logout_type |
|---|---|---|
| 用户主动退出 | 登出 | 主动 |
| token过期 | 登出 | 超时 |
| 管理员强制下线 | 登出 | 强制 |
最后一个管理员强制下线预留,我们下个版本实现这个特性。
八、安全增强设计(推荐扩展)
1. 异常登录识别规则
- 异地登录
- 非常用设备
- 高频失败尝试
2. 风险评分模型
根据以下维度综合评分:
- IP变动频次
- 地理跨度
- 登录时间段异常
- 登录失败次数
展示为:
- 低风险 / 中风险 / 高风险
九、交互流程示意
登录流程
输入账号密码
↓
登录成功
↓
写入登录日志
↓
生成 session
登出流程
点击退出
↓
调用 logout
↓
写入登出日志
↓
销毁 session
十、可扩展方向
- 登录设备白名单
- 登录地历史轨迹图
- 安全告警模块
- 行为风控引擎
- 安全态势大屏
十一、系统价值总结
| 价值 | 说明 |
|---|---|
| 审计 | 行为可追溯 |
| 安全 | 异常实时发现 |
| 合规 | 满足审计要求 |
| 体验 | 用户自查增强信任 |
| 运维 | 快速定位问题 |
