2012-11-12 8 views
6

Ich habe eine Webanwendung mit Federsicherheit konfiguriert, um den Zugriff auf URLs und Methoden zu begrenzen. Ich möchte es standardmäßig komplett deaktivieren und meinen Kunden erlauben, sie einfach zu aktivieren (sie können nur auf "spring-security.xml" zugreifen).Spring Methode Sicherheit in Version 3.0.x

ich es geschafft, die URL Interception auszuschalten, aber meine Methode die Sicherheit aktiviert ist immer noch ...

Jeder Hinweis?

(Ich will nicht die Kunden lassen meine web.xml ändern, so leider die „global-Methode-Sicherheit“ Modifizieren jede Zeiteinstellung ist keine Option ...)

Das ist meine aktualisiert feder security.xml Konfiguration:

<http auto-config='true' use-expressions="true"> 
    <intercept-url pattern="/**" access="permitAll" /> 
    <http-basic /> 
    <anonymous /> 
</http> 

I die DelegatingFilterProxy.doFilter Methode wie folgt überschrieben haben:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) 
      throws ServletException, IOException { 
    final String springSecured = System.getProperty("springSecured"); 

    if (StringUtils.isNotBlank(springSecured) && springSecured.equalsIgnoreCase("true")) { 
     // Call the delegate 
     super.doFilter(request, response, filterChain); 
    } else { 
     // Ignore the DelegatingProxyFilter delegate 
     filterChain.doFilter(request, response); 
    } 
} 

und dies ist ein Beispiel des Verfahrens Sicherheits I haben:

Antwort

4

Wenn ich Sie wäre, würde ich nicht eine benutzerdefinierte Filterkette Implementierung verwenden, nur die eine aus der Box. Sie können Abschnitte von Bean-Konfiguration (seit Frühjahr 3.0) mit verschachtelten Elementen aktivieren und deaktivieren, so etwas wie dies könnte bequemer sein:

<beans profile="secure"> 
    <http auto-config='true' use-expressions="true">...</http> 
</beans> 

Ihre Anwendung ist nun ungeschützt im Standardprofil (und andere, aber die „secure " Profil). Sie können das sichere Profil aktivieren, indem Sie die Systemeigenschaft spring.profiles.active = secure angeben oder indem Sie sie explizit in einem Context oder Servlet-Initialisierer festlegen.

Verwandte Themen