操作界面
1、左侧菜单栏,系统监控-> 在线用户,展示已经登录的用户。
前端代码实现
前端代码路径
前端table配置,该配置的请求url地址是url: prefix + "/list",获取在线用户列表
var options = { uniqueId: "sessionId", url: prefix + "/list", exportUrl: prefix + "/export", sortName: "lastAccessTime", sortOrder: "desc", showExport: true, escape: true, columns: [{ checkbox: true }, { title: "序号", formatter: function (value, row, index) { return $.table.serialNumber(index); } },
java后台代码
@RequiresPermissions("monitor:online:list") @PostMapping("/list") @ResponseBody public TableDataInfo list(SysUserOnline userOnline) { startPage(); List<SysUserOnline> list = userOnlineService.selectUserOnlineList(userOnline); return getDataTable(list); }
强制退出用户
前端按钮绑定事件,按钮代码如下:
title: '操作',align: 'center',formatter: function(value, row, index) { var msg = '<a class="btn btn-danger btn-xs ' + forceFlag + '" href="javascript:void(0)" onclick="forceLogout(\'' + row.sessionId + '\')"><i class="fa fa-sign-out"></i>强退</a> '; return msg; }
如上述代码onclick="forceLogout(\'' + row.sessionId + '\')">,强制退出的绑定事件
具体执行方法
// 单条强退 function forceLogout(sessionId) { $.modal.confirm("确定要强制选中用户下线吗?", function() { var data = { "ids": sessionId }; $.operate.post(prefix + "/batchForceLogout", data); }) }
java后台处理代码
@RequiresPermissions(value = { "monitor:online:batchForceLogout", "monitor:online:forceLogout" }, logical = Logical.OR) @Log(title = "在线用户", businessType = BusinessType.FORCE)@PostMapping("/batchForceLogout") @ResponseBodypublic AjaxResult batchForceLogout(String ids) { for (String sessionId : Convert.toStrArray(ids)) { SysUserOnline online = userOnlineService.selectOnlineById(sessionId); if (online == null) { return error("用户已下线"); } OnlineSession onlineSession = (OnlineSession) onlineSessionDAO.readSession(online.getSessionId()); if (onlineSession == null) { return error("用户已下线"); } if (sessionId.equals(ShiroUtils.getSessionId())) { return error("当前登录用户无法强退"); } onlineSessionDAO.delete(onlineSession); online.setStatus(OnlineStatus.off_line); userOnlineService.saveOnline(online); userOnlineService.removeUserCache(online.getLoginName(), sessionId); } return success(); }
onlineSessionDAO.delete(onlineSession); 从session删除,用户登录失效
online.setStatus(OnlineStatus.off_line):设置状态已经离线
userOnlineService.removeUserCache(online.getLoginName(), sessionId);删除缓存
未来计划
1、ruoyi非分离版本拆解
2、ruoyi-vue-pro:讲解工作流
3、ruoyi-vue-pro:支付模块,电商模块
4、基于ruoyi-vue-pro项目开发
5、JEECG低代码开发平台
请关注我,本星球会持续推出更多的开源项目代码解析,如有更好的意见请留言回复或者私信。
来源:
互联网
本文观点不代表源码解析立场,不承担法律责任,文章及观点也不构成任何投资意见。
评论列表