Commit 21443191 authored by xuepeng.chang's avatar xuepeng.chang

保存用户ip

parent be1a550e
......@@ -47,6 +47,10 @@ public interface Constants {
String X_BEHAVIOR_CHALLENGE = "qg-behavior-challenge";
String X_BEHAVIOR_VALIDATE = "qg-behavior-validate";
String X_BEHAVIOR_SECCODE = "qg-behavior-seccode";
// 请求来源的 ip,由于 用户访问现在不直接访问用户中心,都是通过其他系统访问,就不能把这个当作用户访问的ip
String X_ORIGINAL_CLIENT_IP = "x-original-client-ip";
// 用户访问的ip,如果 需要使用或者记录,其他系统访问的时候 添加该请求头,放的是用户的ip
String X_ORIGINAL_USER_IP = "x-original-user-ip";
String X_BEHAVIOR_IP="ip";
......
......@@ -6,6 +6,7 @@ import cn.quantgroup.xyqb.controller.IBaseController;
import cn.quantgroup.xyqb.entity.LoginRecord;
import cn.quantgroup.xyqb.repository.ILoginRecordRepository;
import cn.quantgroup.xyqb.service.user.ILoginRecordService;
import cn.quantgroup.xyqb.util.IpUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -49,7 +50,12 @@ public class LoginRecordServiceImpl implements ILoginRecordService, IBaseControl
}
loginRecord.setUserTerminal(request.getHeader("x-user-terminal"));
loginRecord.setIp(request.getHeader("x-original-client-ip"));
String ip = IpUtil.getUserIp(request);
if(StringUtils.isEmpty(ip)){
log.warn("调用放没有传用户IP,这里做下兜底");
ip = request.getHeader(Constants.X_ORIGINAL_CLIENT_IP);
}
loginRecord.setIp(ip);
loginRecord.setAppName(request.getHeader("appName"));
loginRecord.setVersion(request.getHeader("version"));
loginRecord.setUserAgent(request.getHeader("User-Agent"));
......
package cn.quantgroup.xyqb.util;
import cn.quantgroup.tech.util.TechEnvironment;
import cn.quantgroup.xyqb.Constants;
import com.google.common.collect.Sets;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
......@@ -83,10 +84,20 @@ public class IpUtil {
}
String remoteAddr = request.getRemoteAddr();
String xRealIp = request.getHeader("x-real-ip");
String xOriginalClientIp = request.getHeader("x-original-client-ip");
String xOriginalClientIp = request.getHeader(Constants.X_ORIGINAL_CLIENT_IP);
logger.info("Test ips:[client={}, old={}, new={}]", remoteAddr, xRealIp, xOriginalClientIp);
}
public static String getUserIp(HttpServletRequest request) {
Objects.requireNonNull(request, "无效请求");
String ip = request.getHeader(Constants.X_ORIGINAL_USER_IP);
if (ValidationUtil.validateIpv4(ip) && !Objects.equals(LOCAL_ADDRESS, ip)) {
return ip;
}
// 这里不做兜底,使用方做
return null;
}
/**
* 获取请求客户端的真实ip地址
*
......@@ -95,7 +106,7 @@ public class IpUtil {
*/
public static String getRemoteIP(HttpServletRequest request) {
Objects.requireNonNull(request, "无效请求");
String ip = request.getHeader("x-original-client-ip");
String ip = request.getHeader(Constants.X_ORIGINAL_CLIENT_IP);
if (ValidationUtil.validateIpv4(ip) && !Objects.equals(LOCAL_ADDRESS, ip)) {
return ip;
}
......
......@@ -73,7 +73,7 @@ public class UserLoginTest {
//测试userId为空的情况
String userId = "";
String ip = "172.16.0.1";
request.addHeader("x-original-client-ip", ip);
request.addHeader(Constants.X_ORIGINAL_CLIENT_IP, ip);
request.addHeader("authorization", "Basic MTg1MTMzNDE4MDg6MTIzNDU2");
JsonResult jsonResult = userController.login(channelId, appChannel, createFrom, userId, "xyqb", "xyqb", null, request, "",UserConstant.defaultTenantId);
AuthBean authBean = (AuthBean) jsonResult.getData();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment