mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-04-12 21:43:16 +08:00
update 优化 操作日志 补齐一些必要的记录数据
This commit is contained in:
@@ -4,12 +4,18 @@ import cn.dev33.satoken.session.SaSession;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.dev33.satoken.stp.parameter.SaLoginParameter;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.http.useragent.UserAgent;
|
||||
import cn.hutool.http.useragent.UserAgentUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.dromara.common.core.constant.SystemConstants;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.core.enums.UserType;
|
||||
import org.dromara.common.core.utils.ServletUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.core.utils.ip.AddressUtils;
|
||||
|
||||
|
||||
/**
|
||||
@@ -44,6 +50,7 @@ public class LoginHelper {
|
||||
*/
|
||||
public static void login(LoginUser loginUser, SaLoginParameter model) {
|
||||
model = ObjectUtil.defaultIfNull(model, new SaLoginParameter());
|
||||
fillRequestContext(loginUser, model);
|
||||
StpUtil.login(loginUser.getLoginId(),
|
||||
model.setExtra(USER_KEY, loginUser.getUserId())
|
||||
.setExtra(USER_NAME_KEY, loginUser.getUsername())
|
||||
@@ -54,6 +61,36 @@ public class LoginHelper {
|
||||
StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);
|
||||
}
|
||||
|
||||
/**
|
||||
* 在登录时补充当前请求上下文,避免登录态中的终端信息缺失。
|
||||
*
|
||||
* @param loginUser 登录用户
|
||||
* @param model 登录参数
|
||||
*/
|
||||
private static void fillRequestContext(LoginUser loginUser, SaLoginParameter model) {
|
||||
HttpServletRequest request = ServletUtils.getRequest();
|
||||
if (ObjectUtil.isNull(request)) {
|
||||
return;
|
||||
}
|
||||
String ip = ServletUtils.getClientIP(request);
|
||||
if (StringUtils.isBlank(loginUser.getIpaddr())) {
|
||||
loginUser.setIpaddr(ip);
|
||||
}
|
||||
if (StringUtils.isBlank(loginUser.getLoginLocation()) && StringUtils.isNotBlank(ip)) {
|
||||
loginUser.setLoginLocation(AddressUtils.getRealAddressByIP(ip));
|
||||
}
|
||||
UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
|
||||
if (StringUtils.isBlank(loginUser.getBrowser())) {
|
||||
loginUser.setBrowser(userAgent.getBrowser().getName());
|
||||
}
|
||||
if (StringUtils.isBlank(loginUser.getOs())) {
|
||||
loginUser.setOs(userAgent.getOs().getName());
|
||||
}
|
||||
if (StringUtils.isBlank(loginUser.getDeviceType()) && StringUtils.isNotBlank(model.getDeviceType())) {
|
||||
loginUser.setDeviceType(model.getDeviceType());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前 Token 对应的登录用户信息。
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user