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

保存用户ip

parent be1a550e
...@@ -47,6 +47,10 @@ public interface Constants { ...@@ -47,6 +47,10 @@ public interface Constants {
String X_BEHAVIOR_CHALLENGE = "qg-behavior-challenge"; String X_BEHAVIOR_CHALLENGE = "qg-behavior-challenge";
String X_BEHAVIOR_VALIDATE = "qg-behavior-validate"; String X_BEHAVIOR_VALIDATE = "qg-behavior-validate";
String X_BEHAVIOR_SECCODE = "qg-behavior-seccode"; 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"; String X_BEHAVIOR_IP="ip";
......
...@@ -6,6 +6,7 @@ import cn.quantgroup.xyqb.controller.IBaseController; ...@@ -6,6 +6,7 @@ import cn.quantgroup.xyqb.controller.IBaseController;
import cn.quantgroup.xyqb.entity.LoginRecord; import cn.quantgroup.xyqb.entity.LoginRecord;
import cn.quantgroup.xyqb.repository.ILoginRecordRepository; import cn.quantgroup.xyqb.repository.ILoginRecordRepository;
import cn.quantgroup.xyqb.service.user.ILoginRecordService; import cn.quantgroup.xyqb.service.user.ILoginRecordService;
import cn.quantgroup.xyqb.util.IpUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -49,7 +50,12 @@ public class LoginRecordServiceImpl implements ILoginRecordService, IBaseControl ...@@ -49,7 +50,12 @@ public class LoginRecordServiceImpl implements ILoginRecordService, IBaseControl
} }
loginRecord.setUserTerminal(request.getHeader("x-user-terminal")); 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.setAppName(request.getHeader("appName"));
loginRecord.setVersion(request.getHeader("version")); loginRecord.setVersion(request.getHeader("version"));
loginRecord.setUserAgent(request.getHeader("User-Agent")); loginRecord.setUserAgent(request.getHeader("User-Agent"));
......
package cn.quantgroup.xyqb.util; package cn.quantgroup.xyqb.util;
import cn.quantgroup.tech.util.TechEnvironment; import cn.quantgroup.tech.util.TechEnvironment;
import cn.quantgroup.xyqb.Constants;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -83,10 +84,20 @@ public class IpUtil { ...@@ -83,10 +84,20 @@ public class IpUtil {
} }
String remoteAddr = request.getRemoteAddr(); String remoteAddr = request.getRemoteAddr();
String xRealIp = request.getHeader("x-real-ip"); 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); 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地址 * 获取请求客户端的真实ip地址
* *
...@@ -95,7 +106,7 @@ public class IpUtil { ...@@ -95,7 +106,7 @@ public class IpUtil {
*/ */
public static String getRemoteIP(HttpServletRequest request) { public static String getRemoteIP(HttpServletRequest request) {
Objects.requireNonNull(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)) { if (ValidationUtil.validateIpv4(ip) && !Objects.equals(LOCAL_ADDRESS, ip)) {
return ip; return ip;
} }
......
...@@ -73,7 +73,7 @@ public class UserLoginTest { ...@@ -73,7 +73,7 @@ public class UserLoginTest {
//测试userId为空的情况 //测试userId为空的情况
String userId = ""; String userId = "";
String ip = "172.16.0.1"; 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"); request.addHeader("authorization", "Basic MTg1MTMzNDE4MDg6MTIzNDU2");
JsonResult jsonResult = userController.login(channelId, appChannel, createFrom, userId, "xyqb", "xyqb", null, request, "",UserConstant.defaultTenantId); JsonResult jsonResult = userController.login(channelId, appChannel, createFrom, userId, "xyqb", "xyqb", null, request, "",UserConstant.defaultTenantId);
AuthBean authBean = (AuthBean) jsonResult.getData(); 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