/* * 在线用户管理功能SQL脚本 * * 功能说明: * 1. 基于Sa-Token + Redis实现,无需专门的在线用户表 * 2. 仅需菜单权限配置,用户数据完全存储在Redis会话中 * 3. 支持实时查看在线用户、踢人下线、强制注销等功能 * * 作者:Leocoder * 创建时间:2025-09-27 */ -- ---------------------------- -- 在线用户管理菜单权限配置 -- ---------------------------- -- 1. 系统监控菜单(如果不存在) INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `en_name`, `parent_id`, `menu_type`, `path`, `name`, `component`, `icon`, `auth`, `menu_status`, `active_menu`, `is_hide`, `is_link`, `is_keep_alive`, `is_full`, `is_affix`, `is_spread`, `sorted`, `create_by`, `create_time`, `update_by`, `update_time`) SELECT 2000, '系统监控', 'System Monitor', 0, '1', '/monitor', 'monitorPage', '', 'Monitor', 'monitor:auth', '0', NULL, '1', '', '0', '1', '1', '1', 3, 'system', NOW(), 'system', NOW() WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `menu_id` = 2000); -- 2. 在线用户菜单 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `en_name`, `parent_id`, `menu_type`, `path`, `name`, `component`, `icon`, `auth`, `menu_status`, `active_menu`, `is_hide`, `is_link`, `is_keep_alive`, `is_full`, `is_affix`, `is_spread`, `sorted`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (2001, '在线用户', 'Online Users', 2000, '2', '/monitor/online', 'onlineUsersPage', 'monitor/online/index', 'UserFilled', 'monitor:online:list', '0', NULL, '1', '', '1', '1', '1', '1', 1, 'system', NOW(), 'system', NOW()); -- 3. 在线用户-查看权限 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `en_name`, `parent_id`, `menu_type`, `path`, `name`, `component`, `icon`, `auth`, `menu_status`, `active_menu`, `is_hide`, `is_link`, `is_keep_alive`, `is_full`, `is_affix`, `is_spread`, `sorted`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (2002, '查看', 'View', 2001, '3', '', NULL, NULL, '', 'monitor:online:list', '0', NULL, '0', '', '0', '1', '1', '1', 1, 'system', NOW(), 'system', NOW()); -- 4. 在线用户-踢人下线权限 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `en_name`, `parent_id`, `menu_type`, `path`, `name`, `component`, `icon`, `auth`, `menu_status`, `active_menu`, `is_hide`, `is_link`, `is_keep_alive`, `is_full`, `is_affix`, `is_spread`, `sorted`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (2003, '踢人下线', 'Kick Out', 2001, '3', '', NULL, NULL, '', 'monitor:online:kickout', '0', NULL, '0', '', '0', '1', '1', '1', 2, 'system', NOW(), 'system', NOW()); -- 5. 在线用户-强制注销权限 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `en_name`, `parent_id`, `menu_type`, `path`, `name`, `component`, `icon`, `auth`, `menu_status`, `active_menu`, `is_hide`, `is_link`, `is_keep_alive`, `is_full`, `is_affix`, `is_spread`, `sorted`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (2004, '强制注销', 'Force Logout', 2001, '3', '', NULL, NULL, '', 'monitor:online:logout', '0', NULL, '0', '', '0', '1', '1', '1', 3, 'system', NOW(), 'system', NOW()); -- ---------------------------- -- 角色权限关联(管理员角色拥有在线用户管理权限) -- ---------------------------- -- 给管理员角色分配在线用户菜单权限 -- 注意:这里假设管理员角色ID为1,请根据实际情况调整 INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) SELECT 1, 2000 WHERE NOT EXISTS (SELECT 1 FROM `sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 2000); INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) SELECT 1, 2001 WHERE NOT EXISTS (SELECT 1 FROM `sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 2001); INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) SELECT 1, 2002 WHERE NOT EXISTS (SELECT 1 FROM `sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 2002); INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) SELECT 1, 2003 WHERE NOT EXISTS (SELECT 1 FROM `sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 2003); INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) SELECT 1, 2004 WHERE NOT EXISTS (SELECT 1 FROM `sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 2004); -- ---------------------------- -- 执行说明 -- ---------------------------- /* 执行此脚本后,系统将具备以下功能: 1. 🎯 功能特性: ✅ 实时查看所有在线用户 ✅ 显示用户详细信息(IP、设备、浏览器等) ✅ 支持按登录名、用户名、IP地址过滤 ✅ 分页显示 ✅ 踢人下线功能 ✅ 强制注销功能 2. 🔐 权限控制: ✅ monitor:online:list - 查看在线用户列表 ✅ monitor:online:kickout - 踢人下线权限 ✅ monitor:online:logout - 强制注销权限 3. 🏗️ 实现原理: ✅ 基于Sa-Token会话管理 ✅ 数据存储在Redis中 ✅ 无需额外数据表 ✅ 实时性能优秀 4. 📱 前端菜单路径: ✅ /monitor/online - 在线用户管理页面 ✅ 位于系统监控模块下 注意事项: - 确保系统已集成Sa-Token和Redis - 确保角色权限表存在且管理员角色ID正确 - 执行前请备份相关表数据 */