支持从header中读取IP地址

This commit is contained in:
wenshao
2013-09-02 09:37:24 +08:00
parent 46179dfc89
commit 3afd71a41d
@@ -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);
}