增加登录成功和注册成功及登出成功的日志,修复

This commit is contained in:
weiweiw 2024-11-07 09:01:17 +08:00
parent c43a4fbf98
commit 8a123a2549
9 changed files with 117 additions and 21 deletions

View File

@ -36,7 +36,7 @@ public interface RemoteLogService
//
/**
* 保存系统日志
* 保存日志
*
* @param sysLogsVo 日志实体
* @param source 请求来源
@ -56,7 +56,7 @@ public interface RemoteLogService
@PostMapping("/operlog/getLogsModule")
public Map<String,String> getLogsModule(@RequestBody SysLogsVo sysLogsVo, @RequestHeader(SecurityConstants.FROM_SOURCE) String source) throws Exception;
/**
* 保存访问记录
* 保存登录日志
*
* @param sysLogininfor 访问实体
* @param source 请求来源

View File

@ -4,10 +4,7 @@ import com.bonus.auth.config.LoginType;
import com.bonus.auth.factory.LoginStrategyFactory;
import com.bonus.auth.form.LoginBody;
import com.bonus.auth.form.RegisterBody;
import com.bonus.auth.service.LoginStrategy;
import com.bonus.auth.service.PasswordValidatorService;
import com.bonus.auth.service.SysLoginService;
import com.bonus.auth.service.SysPasswordService;
import com.bonus.auth.service.*;
import com.bonus.common.core.constant.SecurityConstants;
import com.bonus.common.core.domain.R;
import com.bonus.common.core.utils.JwtUtils;
@ -16,6 +13,7 @@ import com.bonus.common.security.auth.AuthUtil;
import com.bonus.common.security.service.TokenService;
import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.config.SystemConfig;
import com.bonus.system.api.RemoteLogService;
import com.bonus.system.api.RemoteUserService;
import com.bonus.system.api.domain.SysUser;
import com.bonus.system.api.model.LoginUser;
@ -59,6 +57,9 @@ public class TokenController {
@Autowired
private PasswordValidatorService passwordValidatorService;
@Autowired
private SysRecordLogService logService;
@PostMapping("isAdmin")
public R<?> isAdmin(@RequestBody LoginBody form) {
if (!config.isAdmin()) {
@ -109,6 +110,7 @@ public class TokenController {
form.setPassword(form.getVerificationCode());
}
LoginUser login = strategy.login(form.getUsername(), form.getPassword());
logService.saveLogin(form.getUsername(), "登录", "登录成功", null, "成功");
return R.ok(tokenService.createToken(login));
}
@ -143,6 +145,7 @@ public class TokenController {
AuthUtil.logoutByToken(token);
tokenService.delExistingToken(Long.valueOf(userId));
sysLoginService.logout(username, userId);
logService.saveLogout(username, "退出登录", "退出成功", userId, "成功");
}
return R.ok();
}
@ -182,6 +185,7 @@ public class TokenController {
@PostMapping("register")
public R<?> register(@RequestBody RegisterBody registerBody) {
sysLoginService.register(registerBody);
logService.saveRegister(registerBody.getUsername(), "注册", "注册成功", null, "成功");
return R.ok();
}
}

View File

@ -4,6 +4,7 @@ import com.alibaba.nacos.common.utils.UuidUtils;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.utils.global.SystemGlobal;
import com.bonus.common.log.enums.OperaResult;
import com.bonus.common.log.enums.OperaType;
import com.bonus.system.api.domain.SysLogsVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -70,13 +71,13 @@ public class SysRecordLogService
sysLogsVo.setLogId(uuid);
sysLogsVo.setOperaUserName(username);
sysLogsVo.setIp(IpUtils.getIpAddr());
sysLogsVo.setModel("系统登录");
sysLogsVo.setModel("系统认证模块");
sysLogsVo.setOperTime(DateUtils.getTime());
sysLogsVo.setMethodType(SystemGlobal.POST);
sysLogsVo.setMethod("login()");
sysLogsVo.setParams("{\"username\":\""+username+"\"}");
sysLogsVo.setOperateDetail("用户登录系统");
sysLogsVo.setOperType("登录");
sysLogsVo.setOperType(OperaType.LOGIN);
sysLogsVo.setOperUri("/login");
sysLogsVo.setLogType(0);
if (StringUtils.isNotEmpty(result)){
@ -120,7 +121,7 @@ public class SysRecordLogService
}
sysLogsVo.setResultData("用户登录成功");
sysLogsVo.setTitle("系统登录");
sysLogsVo.setModel("系统登录");
sysLogsVo.setModel("系统认证模块");
sysLogsVo.setOperTime(DateUtils.getTime());
sysLogsVo.setMethodType(SystemGlobal.POST);
sysLogsVo.setMethod("login()");
@ -139,7 +140,7 @@ public class SysRecordLogService
}
}
/**
* 记录登信息
* 记录登信息
*
* @param username 用户名
* @param
@ -152,7 +153,7 @@ public class SysRecordLogService
sysLogsVo.setLogId(uuid);
sysLogsVo.setOperaUserName(username);
sysLogsVo.setIp(IpUtils.getIpAddr());
sysLogsVo.setModel("退出登录");
sysLogsVo.setModel("系统认证模块");
sysLogsVo.setLogType(0);
if (StringUtils.isNotEmpty(userId)){
sysLogsVo.setUserId(userId);
@ -178,4 +179,78 @@ public class SysRecordLogService
log.error(e.toString(),e);
}
}
/**
* 记录登录信息
*
* @param username 用户名
* @param
* @param message 消息内容
* @return
*/
public void saveLogin(String username, String message,String resultData,String userId,String result) {
SysLogsVo sysLogsVo = new SysLogsVo();
String uuid= UUID.randomUUID().toString().replace("-","").toUpperCase();
sysLogsVo.setLogId(uuid);
sysLogsVo.setOperaUserName(username);
sysLogsVo.setIp(IpUtils.getIpAddr());
sysLogsVo.setModel("系统认证模块");
sysLogsVo.setLogType(0);
if (StringUtils.isNotEmpty(userId)){
sysLogsVo.setUserId(userId);
}
sysLogsVo.setOperTime(DateUtils.getTime());
sysLogsVo.setMethodType(SystemGlobal.POST);
sysLogsVo.setMethod("login()");
sysLogsVo.setParams("{\"username\":\""+username+"\"}");
sysLogsVo.setOperateDetail("用户登录");
sysLogsVo.setOperType(OperaType.LOGIN);
sysLogsVo.setOperUri("/login");
if (StringUtils.isNotEmpty(result)){
sysLogsVo.setResult(result);
}else{
sysLogsVo.setResult(OperaResult.SUCCESS);
}
sysLogsVo.setFailureReason(message);
sysLogsVo.setTitle("登录");
sysLogsVo.setResultData(resultData);
try{
remoteLogService.addLogs(sysLogsVo, SecurityConstants.INNER);
}catch (Exception e){
log.error(e.toString(),e);
}
}
public void saveRegister(String username, String message,String resultData,String userId,String result) {
SysLogsVo sysLogsVo = new SysLogsVo();
String uuid= UUID.randomUUID().toString().replace("-","").toUpperCase();
sysLogsVo.setLogId(uuid);
sysLogsVo.setOperaUserName(username);
sysLogsVo.setIp(IpUtils.getIpAddr());
sysLogsVo.setModel("系统认证模块");
sysLogsVo.setLogType(0);
if (StringUtils.isNotEmpty(userId)){
sysLogsVo.setUserId(userId);
}
sysLogsVo.setOperTime(DateUtils.getTime());
sysLogsVo.setMethodType(SystemGlobal.POST);
sysLogsVo.setMethod("register()");
sysLogsVo.setParams("{\"username\":\""+username+"\"}");
sysLogsVo.setOperateDetail("用户注册");
sysLogsVo.setOperType(OperaType.REGISTER);
sysLogsVo.setOperUri("/register");
if (StringUtils.isNotEmpty(result)){
sysLogsVo.setResult(result);
}else{
sysLogsVo.setResult(OperaResult.SUCCESS);
}
sysLogsVo.setFailureReason(message);
sysLogsVo.setTitle("注册");
sysLogsVo.setResultData(resultData);
try{
remoteLogService.addLogs(sysLogsVo, SecurityConstants.INNER);
}catch (Exception e){
log.error(e.toString(),e);
}
}
}

View File

@ -101,6 +101,7 @@ public class StringUtilsTest {
public void testSplit() {
assertArrayEquals(new String[0], StringUtils.split(null, ","));
assertArrayEquals(new String[]{"a", "b", "c"}, StringUtils.split("a,b,c", ","));
assertArrayEquals(new String[]{"a", "b", "c"}, StringUtils.split("a.b.c", "\\."));
}
@Test

View File

@ -52,4 +52,11 @@ public class OperaType {
* 其他
*/
public final static String FLASH="刷新";
public final static String LOGIN="登录";
public final static String LOGOUT="登出";
public final static String REGISTER="注册";
}

View File

@ -25,7 +25,7 @@ import static org.springframework.http.MediaType.MULTIPART_FORM_DATA_VALUE;
public class ParamSecureHandler implements AsyncHandlerInterceptor {
private static final String [] WHITE_URL = {
"/login", "/isAdmin", "/isLogin", "/register","/operlog/addLogs","/job"};
"/login", "/isAdmin", "/isLogin" ,"/register","/user/register","/operlog/addLogs","/job/edit","/user/resetPwd","/user/profile/updatePwd'"};
private String rnd = null;
public static String ur = "/";

View File

@ -133,7 +133,7 @@ public class ScheduleUtils
{
return StringUtils.containsAnyIgnoreCase(invokeTarget, Constants.JOB_WHITELIST_STR);
}
Object obj = SpringUtils.getBean(StringUtils.split(invokeTarget, ".")[0]);
Object obj = SpringUtils.getBean(StringUtils.split(invokeTarget, "\\.")[0]);
String beanPackageName = obj.getClass().getPackage().getName();
return StringUtils.containsAnyIgnoreCase(beanPackageName, Constants.JOB_WHITELIST_STR)
&& !StringUtils.containsAnyIgnoreCase(beanPackageName, Constants.JOB_ERROR_STR);

View File

@ -53,12 +53,21 @@ public class SysLogController extends BaseController {
// @Value("${sql.filePath}")
// private String filePath;
/**
* 保存系统日志业务日志和其他日常日志
* @param sysLog 日志对象
*/
@ApiOperation(value = "保存系统日志")
@PostMapping("saveLogs")
public AjaxResult saveLogs(@RequestBody SysLogsVo sysLog) {
return service.saveLogs(sysLog);
}
/**
* 保存越权日志
* @param sysLog
* @param request
*/
@PostMapping("addLogs")
public void addLogs(@RequestBody SysLogsVo sysLog,HttpServletRequest request) {
service.saveLogs(sysLog,request);
@ -84,7 +93,7 @@ public class SysLogController extends BaseController {
@ApiOperation(value = "查询业务日志")
@GetMapping("getYwLogs")
@SysLog(title = "审计日志", module = "审计日志->业务日志", businessType = OperaType.QUERY, details = "查询业务日志列表", type = "系统日志")
@SysLog(title = "审计日志", module = "审计日志->业务日志", businessType = OperaType.QUERY, details = "查询业务日志列表", type = "系统日志",logType = 0)
public TableDataInfo getYwLogs(SysLogsVo dto) {
try{
dto.setLogType(1);
@ -99,7 +108,7 @@ public class SysLogController extends BaseController {
@ApiOperation(value = "查询异常日志")
@GetMapping("getErrLogs")
@SysLog(title = "审计日志", module = "审计日志->异常日志", businessType = OperaType.QUERY, details = "查询系统异常日志", type = "系统日志")
@SysLog(title = "审计日志", module = "审计日志->异常日志", businessType = OperaType.QUERY ,logType = 0,details = "查询系统异常日志", type = "系统日志")
public TableDataInfo getErrLogs(SysLogsVo dto) {
try{
dto.setLogType(2);
@ -113,7 +122,7 @@ public class SysLogController extends BaseController {
}
@ApiOperation(value = "日志备份")
@GetMapping("downloadErrLogs")
@SysLog(title = "审计日志", module = "审计日志->异常日志", businessType = OperaType.COPY_LOG, details = "异常日志备份", type = "系统日志")
@SysLog(title = "审计日志", module = "审计日志->异常日志", businessType = OperaType.COPY_LOG, logType = 0, details = "异常日志备份", type = "系统日志")
public void downloadErrLogs(HttpServletRequest request, HttpServletResponse response) {
// try {
// String dateTimeNow=exportSqlService.export("2");
@ -126,7 +135,7 @@ public class SysLogController extends BaseController {
@ApiOperation(value = "日志备份")
@GetMapping("downloadYwLogs")
@SysLog(title = "审计日志", module = "审计日志-->业务日志", businessType = OperaType.COPY_LOG, details = "业务日志备份", type = "系统日志")
@SysLog(title = "审计日志", module = "审计日志-->业务日志", businessType = OperaType.COPY_LOG,logType = 0, details = "业务日志备份", type = "系统日志")
public void downloadYwLogs(HttpServletRequest request, HttpServletResponse response) {
// try {
// String dateTimeNow=exportSqlService.export("1");