mirror of
https://github.com/dromara/RuoYi-Vue-Plus.git
synced 2026-08-11 05:41:02 +00:00
fix 修复 主线程先虚拟线程关闭导致无法获取request问题
This commit is contained in:
@@ -7,6 +7,7 @@ import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.lang.Opt;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.lock.annotation.Lock4j;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import me.zhyd.oauth.model.AuthUser;
|
||||
@@ -136,7 +137,12 @@ public class SysLoginService {
|
||||
loginInfoEvent.setUsername(username);
|
||||
loginInfoEvent.setStatus(status);
|
||||
loginInfoEvent.setMessage(message);
|
||||
loginInfoEvent.setRequest(ServletUtils.getRequest());
|
||||
HttpServletRequest request = ServletUtils.getRequest();
|
||||
if (request != null) {
|
||||
loginInfoEvent.setIp(ServletUtils.getClientIP(request));
|
||||
loginInfoEvent.setUserAgent(request.getHeader("User-Agent"));
|
||||
loginInfoEvent.setClientId(request.getHeader(LoginHelper.CLIENT_KEY));
|
||||
}
|
||||
SpringUtils.context().publishEvent(loginInfoEvent);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.dromara.web.service;
|
||||
|
||||
import cn.hutool.crypto.digest.BCrypt;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.constant.Constants;
|
||||
import org.dromara.common.core.constant.GlobalConstants;
|
||||
@@ -14,6 +15,7 @@ import org.dromara.common.core.utils.SpringUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.log.event.LoginInfoEvent;
|
||||
import org.dromara.common.redis.utils.RedisUtils;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.common.web.config.properties.CaptchaProperties;
|
||||
import org.dromara.system.api.model.RegisterBody;
|
||||
import org.dromara.system.domain.SysUser;
|
||||
@@ -103,7 +105,12 @@ public class SysRegisterService {
|
||||
loginInfoEvent.setUsername(username);
|
||||
loginInfoEvent.setStatus(status);
|
||||
loginInfoEvent.setMessage(message);
|
||||
loginInfoEvent.setRequest(ServletUtils.getRequest());
|
||||
HttpServletRequest request = ServletUtils.getRequest();
|
||||
if (request != null) {
|
||||
loginInfoEvent.setIp(ServletUtils.getClientIP(request));
|
||||
loginInfoEvent.setUserAgent(request.getHeader("User-Agent"));
|
||||
loginInfoEvent.setClientId(request.getHeader(LoginHelper.CLIENT_KEY));
|
||||
}
|
||||
SpringUtils.context().publishEvent(loginInfoEvent);
|
||||
}
|
||||
|
||||
|
||||
+12
-3
@@ -1,6 +1,5 @@
|
||||
package org.dromara.common.log.event;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
@@ -34,9 +33,19 @@ public class LoginInfoEvent implements Serializable {
|
||||
private String message;
|
||||
|
||||
/**
|
||||
* 请求体
|
||||
* 客户端IP
|
||||
*/
|
||||
private HttpServletRequest request;
|
||||
private String ip;
|
||||
|
||||
/**
|
||||
* 用户代理
|
||||
*/
|
||||
private String userAgent;
|
||||
|
||||
/**
|
||||
* 客户端标识
|
||||
*/
|
||||
private String clientId;
|
||||
|
||||
/**
|
||||
* 其他参数
|
||||
|
||||
+3
-7
@@ -4,19 +4,16 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.useragent.UserAgent;
|
||||
import cn.hutool.http.useragent.UserAgentUtil;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.constant.Constants;
|
||||
import org.dromara.common.core.domain.PageResult;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.ServletUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.core.utils.ip.AddressUtils;
|
||||
import org.dromara.common.log.event.LoginInfoEvent;
|
||||
import org.dromara.common.mybatis.core.mapper.LambdaCrudChainWrapper;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.system.domain.SysLoginInfo;
|
||||
import org.dromara.system.domain.bo.SysLoginInfoBo;
|
||||
import org.dromara.system.domain.vo.SysClientVo;
|
||||
@@ -55,11 +52,10 @@ public class SysLoginInfoServiceImpl implements ISysLoginInfoService {
|
||||
@Async
|
||||
@EventListener
|
||||
public void recordLoginInfo(LoginInfoEvent loginInfoEvent) {
|
||||
HttpServletRequest request = loginInfoEvent.getRequest();
|
||||
UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
|
||||
String ip = ServletUtils.getClientIP(request);
|
||||
UserAgent userAgent = UserAgentUtil.parse(loginInfoEvent.getUserAgent());
|
||||
String ip = loginInfoEvent.getIp();
|
||||
// 客户端信息
|
||||
String clientId = request.getHeader(LoginHelper.CLIENT_KEY);
|
||||
String clientId = loginInfoEvent.getClientId();
|
||||
SysClientVo client = null;
|
||||
if (StringUtils.isNotBlank(clientId)) {
|
||||
client = clientService.queryByClientId(clientId);
|
||||
|
||||
Reference in New Issue
Block a user