|
@@ -9,6 +9,7 @@ package cn.com.qmth.examcloud.app.config;
|
|
|
|
|
|
import cn.com.qmth.examcloud.app.model.DeviceRecord;
|
|
|
import cn.com.qmth.examcloud.app.service.DeviceRecordService;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -47,6 +48,7 @@ public class AccessInterceptor extends HandlerInterceptorAdapter {
|
|
|
String token = request.getHeader("token");
|
|
|
String params = this.getParams(request);
|
|
|
String url = request.getServletPath() + params;
|
|
|
+ String ip = this.getIp(request);
|
|
|
|
|
|
DeviceRecord record = new DeviceRecord();
|
|
|
record.setSystem(system);
|
|
@@ -62,6 +64,7 @@ public class AccessInterceptor extends HandlerInterceptorAdapter {
|
|
|
record.setLoginKey(key);
|
|
|
record.setLoginToken(token);
|
|
|
record.setUrl(url);
|
|
|
+ record.setIp(ip);
|
|
|
record.setCreateDate(new Date());
|
|
|
return record;
|
|
|
}
|
|
@@ -90,4 +93,24 @@ public class AccessInterceptor extends HandlerInterceptorAdapter {
|
|
|
return params.toString().replaceFirst("&", "?");
|
|
|
}
|
|
|
|
|
|
+ private String getIp(HttpServletRequest request) {
|
|
|
+ String ip = request.getHeader("X-Forwarded-For");
|
|
|
+ if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
|
|
|
+ ip = request.getHeader("Proxy-Client-IP");
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
|
|
|
+ ip = request.getHeader("WL-Proxy-Client-IP");
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
|
|
|
+ ip = request.getHeader("HTTP_CLIENT_IP");
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
|
|
|
+ ip = request.getHeader("HTTP_X_FORWARDED_FOR");
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
|
|
|
+ ip = request.getRemoteAddr();
|
|
|
+ }
|
|
|
+ return ip;
|
|
|
+ }
|
|
|
+
|
|
|
}
|