浏览代码

SEC-2187: Polish

Create private utf8UrlEncode method to improve readability
Rob Winch 12 年之前
父节点
当前提交
e88800cd9b
共有 1 个文件被更改,包括 39 次插入29 次删除
  1. 39 29
      openid/src/main/java/org/springframework/security/openid/OpenIDAuthenticationFilter.java

+ 39 - 29
openid/src/main/java/org/springframework/security/openid/OpenIDAuthenticationFilter.java

@@ -188,37 +188,31 @@ public class OpenIDAuthenticationFilter extends AbstractAuthenticationProcessing
      * @return The <tt>return_to</tt> URL.
      */
     protected String buildReturnToUrl(HttpServletRequest request) {
-        try {
-            StringBuffer sb = request.getRequestURL();
-    
-            Iterator<String> iterator = returnToUrlParameters.iterator();
-            boolean isFirst = true;
-    
-            while (iterator.hasNext()) {
-                String name = iterator.next();
-                // Assume for simplicity that there is only one value
-                String value = request.getParameter(name);
-    
-                if (value == null) {
-                    continue;
-                }
-    
-                if (isFirst) {
-                    sb.append("?");
-                    isFirst = false;
-                }
-                sb.append(URLEncoder.encode(name, "UTF-8")).append("=").append(URLEncoder.encode(value, "UTF-8"));
-    
-                if (iterator.hasNext()) {
-                    sb.append("&");
-                }
+        StringBuffer sb = request.getRequestURL();
+
+        Iterator<String> iterator = returnToUrlParameters.iterator();
+        boolean isFirst = true;
+
+        while (iterator.hasNext()) {
+            String name = iterator.next();
+            // Assume for simplicity that there is only one value
+            String value = request.getParameter(name);
+
+            if (value == null) {
+                continue;
+            }
+
+            if (isFirst) {
+                sb.append("?");
+                isFirst = false;
+            }
+            sb.append(utf8UrlEncode(name)).append("=").append(utf8UrlEncode(value));
+
+            if (iterator.hasNext()) {
+                sb.append("&");
             }
-            return sb.toString();
-        } catch(UnsupportedEncodingException e) {
-            Error err = new AssertionError("The Java platform guarantees UTF-8 support, but it seemingly is not present.");
-            err.initCause(e);
-            throw err;
         }
+        return sb.toString();
     }
 
     /**
@@ -276,4 +270,20 @@ public class OpenIDAuthenticationFilter extends AbstractAuthenticationProcessing
         Assert.notNull(returnToUrlParameters, "returnToUrlParameters cannot be null");
         this.returnToUrlParameters = returnToUrlParameters;
     }
+
+    /**
+     * Performs URL encoding with UTF-8
+     *
+     * @param value the value to URL encode
+     * @return the encoded value
+     */
+    private String utf8UrlEncode(String value) {
+        try {
+            return URLEncoder.encode(value, "UTF-8");
+        } catch(UnsupportedEncodingException e) {
+            Error err = new AssertionError("The Java platform guarantees UTF-8 support, but it seemingly is not present.");
+            err.initCause(e);
+            throw err;
+        }
+    }
 }