|
@@ -46,29 +46,34 @@ public class SysKeyResolver implements KeyResolver {
|
|
|
public static String getIpAddress(ServerHttpRequest request) {
|
|
|
HttpHeaders headers = request.getHeaders();
|
|
|
String ip = headers.getFirst("x-forwarded-for");
|
|
|
- if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
|
|
|
- // 多次反向代理后会有多个ip值,第一个ip才是真实ip
|
|
|
- if (ip.indexOf(",") != -1) {
|
|
|
- ip = ip.split(",")[0];
|
|
|
- }
|
|
|
- }
|
|
|
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
|
- ip = headers.getFirst("Proxy-Client-IP");
|
|
|
- }
|
|
|
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
|
- ip = headers.getFirst("WL-Proxy-Client-IP");
|
|
|
- }
|
|
|
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
|
- ip = headers.getFirst("HTTP_CLIENT_IP");
|
|
|
- }
|
|
|
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
|
- ip = headers.getFirst("HTTP_X_FORWARDED_FOR");
|
|
|
- }
|
|
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
|
- ip = headers.getFirst("X-Real-IP");
|
|
|
- }
|
|
|
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
|
- ip = request.getRemoteAddress().getAddress().getHostAddress();
|
|
|
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
|
+ ip = headers.getFirst("Proxy-Client-IP");
|
|
|
+ }
|
|
|
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
|
+ ip = headers.getFirst("WL-Proxy-Client-IP");
|
|
|
+ }
|
|
|
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
|
+ ip = headers.getFirst("HTTP_CLIENT_IP");
|
|
|
+ }
|
|
|
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
|
+ ip = headers.getFirst("HTTP_X_FORWARDED_FOR");
|
|
|
+ }
|
|
|
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
|
+ ip = headers.getFirst("X-Real-IP");
|
|
|
+ }
|
|
|
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
|
+ ip = request.getRemoteAddress().getAddress().getHostAddress();
|
|
|
+ }
|
|
|
+ } else if (ip.length() > 15) {
|
|
|
+ String[] ips = ip.split(",");
|
|
|
+ for (int index = 0; index < ips.length; index++) {
|
|
|
+ String strIp = (String) ips[index];
|
|
|
+ if (!("unknown".equalsIgnoreCase(strIp))) {
|
|
|
+ ip = strIp;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
return ip;
|
|
|
}
|