publicclassWebUtilextendsWebUtils{privatestaticfinalLogger log =LoggerFactory.getLogger(WebUtil.class);publicstaticfinalStringUSER_AGENT_HEADER="user-agent";publicstaticfinalStringUN_KNOWN="unknown";publicWebUtil(){}publicstaticStringgetUserInfoString(String key){String result =null;RequestAttributes requestAttributes =RequestContextHolder.getRequestAttributes();HttpServletRequest httpServletRequest = requestAttributes ==null?null:((ServletRequestAttributes)requestAttributes).getRequest();if(httpServletRequest !=null){Object userInfo = httpServletRequest.getAttribute(key);if(userInfo !=null){
result = userInfo.toString();}}return result;}publicstaticStringgetIP(){returngetIP(getRequest());}@NullablepublicstaticStringgetIP(HttpServletRequest request){Assert.notNull(request,"HttpServletRequest is null");String ip = request.getHeader("X-Requested-For");if(StringUtil.isBlank(ip)||"unknown".equalsIgnoreCase(ip)){
ip = request.getHeader("X-Forwarded-For");}if(StringUtil.isBlank(ip)||"unknown".equalsIgnoreCase(ip)){
ip = request.getHeader("Proxy-Client-IP");}if(StringUtil.isBlank(ip)||"unknown".equalsIgnoreCase(ip)){
ip = request.getHeader("WL-Proxy-Client-IP");}if(StringUtil.isBlank(ip)||"unknown".equalsIgnoreCase(ip)){
ip = request.getHeader("HTTP_CLIENT_IP");}if(StringUtil.isBlank(ip)||"unknown".equalsIgnoreCase(ip)){
ip = request.getHeader("HTTP_X_FORWARDED_FOR");}if(StringUtil.isBlank(ip)||"unknown".equalsIgnoreCase(ip)){
ip = request.getRemoteAddr();}returnStringUtil.isBlank(ip)?null: ip.split(",")[0];}}