瀏覽代碼

* src/net/sf/acegisecurity/adapters/AutoIntegrationFilter.java:
Use reflection instead of hard-coding the values to determine
if we should integrate with a specific container implementation.

Francois Beausoleil 21 年之前
父節點
當前提交
1e4c234ea7
共有 1 個文件被更改,包括 16 次插入8 次删除
  1. 16 8
      core/src/main/java/org/acegisecurity/adapters/AutoIntegrationFilter.java

+ 16 - 8
core/src/main/java/org/acegisecurity/adapters/AutoIntegrationFilter.java

@@ -18,8 +18,6 @@ package net.sf.acegisecurity.adapters;
 import net.sf.acegisecurity.Authentication;
 import net.sf.acegisecurity.adapters.jboss.JbossIntegrationFilter;
 
-import org.jboss.security.SimplePrincipal;
-
 import javax.servlet.ServletRequest;
 import javax.servlet.http.HttpServletRequest;
 
@@ -33,13 +31,11 @@ import javax.servlet.http.HttpServletRequest;
  * <code>web.xml</code> will not need to refer to a specific container
  * integration filter.
  * </p>
- * 
- * <p>
- * See {@link AbstractIntegrationFilter} for further information.
- * </p>
  *
  * @author Ben Alex
  * @version $Id$
+ *
+ * @see AbstractIntegrationFilter
  */
 public class AutoIntegrationFilter extends AbstractIntegrationFilter {
     //~ Methods ================================================================
@@ -52,8 +48,20 @@ public class AutoIntegrationFilter extends AbstractIntegrationFilter {
                 return new HttpRequestIntegrationFilter().extractFromContainer(request);
             }
 
-            if (httpRequest.getUserPrincipal() instanceof SimplePrincipal) {
-                return new JbossIntegrationFilter().extractFromContainer(request);
+            try {
+                Class simplePrincipalClass = Class.forName(
+                        "org.jboss.security.SimplePrincipal");
+
+                if (null != httpRequest.getUserPrincipal()) {
+                    if (simplePrincipalClass.isAssignableFrom(
+                            httpRequest.getUserPrincipal().getClass())) {
+                        return new JbossIntegrationFilter()
+                        .extractFromContainer(request);
+                    }
+                }
+            } catch (ClassNotFoundException e) {
+                // Can't be JBoss principal
+                // Expected, and normal - fall through
             }
         }