From dbd105717679d6cb36daffbd614f7e9aa7604931 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Fri, 1 Mar 2024 10:13:45 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=97=A5=E5=BF=97/=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/controller/TokenController.java | 4 ++ .../auth/service/SysLoginService.java | 9 ++- .../auth/service/SysPasswordService.java | 2 +- .../auth/service/SysRecordLogService.java | 61 +++++++++---------- 4 files changed, 42 insertions(+), 34 deletions(-) diff --git a/securitycontrol-auth/src/main/java/com/securitycontrol/auth/controller/TokenController.java b/securitycontrol-auth/src/main/java/com/securitycontrol/auth/controller/TokenController.java index 1bf1b85..546e5ea 100644 --- a/securitycontrol-auth/src/main/java/com/securitycontrol/auth/controller/TokenController.java +++ b/securitycontrol-auth/src/main/java/com/securitycontrol/auth/controller/TokenController.java @@ -3,6 +3,7 @@ package com.securitycontrol.auth.controller; import com.securitycontrol.auth.form.LoginBody; import com.securitycontrol.auth.service.SysLoginService; +import com.securitycontrol.auth.service.SysRecordLogService; import com.securitycontrol.common.core.constant.SecurityConstants; import com.securitycontrol.common.core.domain.Result; import com.securitycontrol.common.core.utils.JwtUtils; @@ -42,6 +43,8 @@ public class TokenController { @Autowired private SysLoginService sysLoginService; + @Autowired + private SysRecordLogService recordLogService; @@ -66,6 +69,7 @@ public class TokenController { Integer userId = (Integer) claims.get(SecurityConstants.DETAILS_USER_ID); String iscUser = (String) claims.get(SecurityConstants.DETAILS_ISC_USER_ID); String userName = (String) claims.get(SecurityConstants.DETAILS_USERNAME); + recordLogService.recordLogininfor(userName,Long.valueOf(userId + ""),"用户登出",null,2); redisUtil.delete("token:" + jwtToken); redisUtil.delete("userId:" + userId); redisUtil.delete("ISCUserId:" + iscUser); diff --git a/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysLoginService.java b/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysLoginService.java index b1e594b..5773172 100644 --- a/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysLoginService.java +++ b/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysLoginService.java @@ -39,6 +39,7 @@ public class SysLoginService // 用户名或密码为空 错误 if (StringUtils.isAnyBlank(username, password)) { + recordLogService.recordLogininfor(username,null,"用户登录","用户/密码不能为空",1); throw new ServiceException("用户/密码不能为空",201); } // 查询用户信息 @@ -46,35 +47,39 @@ public class SysLoginService if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) { + recordLogService.recordLogininfor(username,null,"用户登录","登录用户:" + username + " 不存在",1); throw new ServiceException("登录用户:" + username + " 不存在",201); } if (Result.FAIL == userResult.getCode()) { + recordLogService.recordLogininfor(username,null,"用户登录",userResult.getMsg(),1); throw new ServiceException(userResult.getMsg()); } LoginUser userInfo = userResult.getData(); SysUser user = userResult.getData().getSysUser(); if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { + recordLogService.recordLogininfor(username,null,"用户登录","对不起,您的账号:" + username + " 已被删除",1); throw new ServiceException("对不起,您的账号:" + username + " 已被删除",201); } if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { + recordLogService.recordLogininfor(username,null,"用户登录","对不起,您的账号:" + username + " 已锁定",1); throw new ServiceException("对不起,您的账号:" + username + " 已锁定",201); } passwordService.validate(user, password); Result> menu = remoteUserService.getAllMenuList(user.getUserId()+"", SecurityConstants.INNER); list=menu.getData(); userInfo.getSysUser().setMenus(list); - recordLogService.recordLogininfor(username, "用户登录", "系统登录"); + recordLogService.recordLogininfor(username,null, "用户登录", null,1); remoteUserService.updateUserLogin(user.getUserId(),SecurityConstants.INNER); return userInfo; } public void logout(String loginName) { - recordLogService.recordLogininfor(loginName, "用户登出", "退出登录"); + recordLogService.recordLogininfor(loginName,null, "用户登出", null,2); } } diff --git a/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysPasswordService.java b/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysPasswordService.java index 0e54a64..2e7be3e 100644 --- a/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysPasswordService.java +++ b/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysPasswordService.java @@ -48,7 +48,7 @@ public class SysPasswordService } if (!matches(user, password)) { retryCount = retryCount + 1; - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, String.format("密码输入错误%s次", retryCount)); + recordLogService.recordLogininfor(username,user.getUserId(),"用户登录", String.format("密码输入错误%s次", retryCount),1); redisService.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES); throw new ServiceException("用户不存在/密码错误",201); } else { diff --git a/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysRecordLogService.java b/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysRecordLogService.java index 228f710..2de3be5 100644 --- a/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysRecordLogService.java +++ b/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysRecordLogService.java @@ -1,22 +1,18 @@ package com.securitycontrol.auth.service; -import com.google.common.collect.Maps; +import com.securitycontrol.common.core.constant.SecurityConstants; +import com.securitycontrol.common.core.utils.ServletUtils; import com.securitycontrol.common.core.utils.aes.DateTimeHelper; +import com.securitycontrol.common.core.utils.ip.IpUtils; import com.securitycontrol.common.security.utils.SecurityUtils; -import com.securitycontrol.system.api.domain.SysOperLog; +import com.securitycontrol.system.api.RemoteLogService; +import com.securitycontrol.system.api.domain.SysLog; import com.securitycontrol.system.api.domain.SysUser; import com.securitycontrol.system.api.model.LoginUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import com.securitycontrol.common.core.constant.Constants; -import com.securitycontrol.common.core.constant.SecurityConstants; -import com.securitycontrol.common.core.utils.ServletUtils; -import com.securitycontrol.common.core.utils.StringUtils; -import com.securitycontrol.common.core.utils.ip.IpUtils; -import com.securitycontrol.system.api.RemoteLogService; -import com.securitycontrol.system.api.domain.SysLogininfor; -import java.util.Map; +import java.util.UUID; /** * 记录日志方法 @@ -31,32 +27,35 @@ public class SysRecordLogService { /** * 记录登录信息 * - * @param username 用户名 - * @param title 标题 - * @param detail 详情 + * @param username 用户名 + * @param model 操作模块 + * @param detail 详情 + * @param operaType 1.登录 2.登出 * @return */ - public void recordLogininfor(String username, String title, String detail) { - SysOperLog sysOperLog = new SysOperLog(); - sysOperLog.setGrade(title); - sysOperLog.setTimes(DateTimeHelper.getNowTime()); - sysOperLog.setOperName(username); + public void recordLogininfor(String username, Long userId, String model, String detail, int operaType) { + SysLog sysLog = new SysLog(); + String id = UUID.randomUUID().toString().replaceAll("-", ""); + sysLog.setLogId(id); + sysLog.setOperTime(DateTimeHelper.getNowTime()); + sysLog.setOperaUserName(username); LoginUser loginUser = SecurityUtils.getLoginUser(); if (null != loginUser && null != loginUser.getSysUser()) { SysUser sysUser = loginUser.getSysUser(); - sysOperLog.setRoleName(sysUser.getRoleName()); - sysOperLog.setDeptName(sysUser.getOrgName()); + sysLog.setUserId(sysUser.getUserId()); } - sysOperLog.setOperIp(IpUtils.getIpAddr(ServletUtils.getRequest())); - sysOperLog.setTitle(title); - sysOperLog.setRequestMethod("POST"); - sysOperLog.setMethod("com.securitycontrol.auth.controller.login()"); - sysOperLog.setBusinessType(0); - sysOperLog.setOperUrl("/auth/login"); - sysOperLog.setOperParam(username); - sysOperLog.setDetail(detail); - sysOperLog.setLogType("系统日志"); - sysOperLog.setSysMenu(""); - remoteLogService.saveLogs(sysOperLog, SecurityConstants.INNER); + if(userId != null){ + sysLog.setUserId(userId); + } + sysLog.setIp(IpUtils.getIpAddr(ServletUtils.getRequest())); + sysLog.setModel(model); + sysLog.setOperType(model); + sysLog.setOperateDetail(model); + sysLog.setMethod(operaType == 1 ? "com.securitycontrol.auth.controller.login()" : "com.securitycontrol.auth.controller.logout()"); + sysLog.setResult(detail == null ? 0 : 1); + sysLog.setOperUri(operaType == 1 ? "/auth/login" : "/auth/logout"); + sysLog.setFailureReason(detail); + sysLog.setLogType(0); + remoteLogService.saveSysLog(sysLog, SecurityConstants.INNER); } }