From 3afd71a41d38b24b4b1c40a4173db88a9c920ea9 Mon Sep 17 00:00:00 2001 From: wenshao Date: Mon, 2 Sep 2013 09:37:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=BB=8Eheader=E4=B8=AD?= =?UTF-8?q?=E8=AF=BB=E5=8F=96IP=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../druid/support/http/ResourceSerlvet.java | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/alibaba/druid/support/http/ResourceSerlvet.java b/src/main/java/com/alibaba/druid/support/http/ResourceSerlvet.java index 387a864520..dbe0c305b2 100644 --- a/src/main/java/com/alibaba/druid/support/http/ResourceSerlvet.java +++ b/src/main/java/com/alibaba/druid/support/http/ResourceSerlvet.java @@ -42,6 +42,7 @@ public abstract class ResourceSerlvet extends HttpServlet { public static final String PARAM_NAME_PASSWORD = "loginPassword"; public static final String PARAM_NAME_ALLOW = "allow"; public static final String PARAM_NAME_DENY = "deny"; + public static final String PARAM_REMOTE_ADDR = "remoteAddress"; protected String username = null; protected String password = null; @@ -51,6 +52,8 @@ public abstract class ResourceSerlvet extends HttpServlet { protected final String resourcePath; + protected String remoteAddressHeader = null; + public ResourceSerlvet(String resourcePath){ this.resourcePath = resourcePath; } @@ -70,6 +73,11 @@ public abstract class ResourceSerlvet extends HttpServlet { this.password = paramPassword; } + String paramRemoteAddressHeader = getInitParameter(PARAM_REMOTE_ADDR); + if (!StringUtils.isEmpty(paramRemoteAddressHeader)) { + this.remoteAddressHeader = paramRemoteAddressHeader; + } + try { String param = getInitParameter(PARAM_NAME_ALLOW); if (param != null && param.trim().length() != 0) { @@ -218,7 +226,7 @@ public abstract class ResourceSerlvet extends HttpServlet { if (contextPath == null || contextPath.equals("") || contextPath.equals("/")) { response.sendRedirect("/druid/login.html"); } else { - if("".equals(path)){ + if ("".equals(path)) { response.sendRedirect("druid/login.html"); } else { response.sendRedirect("login.html"); @@ -267,9 +275,23 @@ public abstract class ResourceSerlvet extends HttpServlet { } public boolean isPermittedRequest(HttpServletRequest request) { - String remoteAddress = request.getRemoteAddr(); + String remoteAddress = getRemoteAddress(request); return isPermittedRequest(remoteAddress); } + protected String getRemoteAddress(HttpServletRequest request) { + String remoteAddr = null; + + if (remoteAddressHeader != null) { + remoteAddr = request.getHeader(remoteAddressHeader); + } + + if (remoteAddr == null) { + remoteAddr = request.getRemoteAddr(); + } + + return remoteAddr; + } + protected abstract String process(String url); }