浏览代码

SEC-229: Allow external URLs from AbstractProcessingFilter.

Ben Alex 19 年之前
父节点
当前提交
540c7b2e6a
共有 1 个文件被更改,包括 12 次插入2 次删除
  1. 12 2
      core/src/main/java/org/acegisecurity/ui/AbstractProcessingFilter.java

+ 12 - 2
core/src/main/java/org/acegisecurity/ui/AbstractProcessingFilter.java

@@ -350,6 +350,17 @@ public abstract class AbstractProcessingFilter implements Filter,
         return uri.endsWith(request.getContextPath() + filterProcessesUrl);
     }
 
+    protected void sendRedirect(HttpServletRequest request,
+        HttpServletResponse response, String failureUrl)
+        throws IOException {
+        if (!failureUrl.startsWith("http://")
+            && !failureUrl.startsWith("https://")) {
+            failureUrl = request.getContextPath() + failureUrl;
+        }
+
+        response.sendRedirect(response.encodeRedirectURL(failureUrl));
+    }
+
     public void setAlwaysUseDefaultTargetUrl(boolean alwaysUseDefaultTargetUrl) {
         this.alwaysUseDefaultTargetUrl = alwaysUseDefaultTargetUrl;
     }
@@ -466,7 +477,6 @@ public abstract class AbstractProcessingFilter implements Filter,
 
         rememberMeServices.loginFail(request, response);
 
-        response.sendRedirect(response.encodeRedirectURL(request.getContextPath()
-                + failureUrl));
+        sendRedirect(request, response, failureUrl);
     }
 }