Spring Security kuriosität in <intercept-url - > bei der Angabe der Methode

Ich habe das Spiel mit Spring Security ein bisschen und bemerkte, die folgende kuriosität.

Wenn ich geben Sie die <http> block so in meinem security-Kontext von XML.

<http>
    <http-basic/>

    <port-mappings>
        <port-mapping http="8080" https="8181"/>
    </port-mappings>

    <intercept-url pattern="/url1**" access="ROLE_ROLE1" requires-channel="https"/>
    <intercept-url pattern="/url2**" access="ROLE_ROLE2"/>
    <intercept-url pattern="/url3**" access="ROLE_ROLE3" />
    <!-- <intercept-url pattern="/**" access="ROLE_ADMIN" />
</http>

Alle urls scheinen, so lösen Sie eine HTTP-basic-Authentifizierungs-pop-up, wenn ich auf den verschiedene URLs mit dem browser.

Dies ist gut und was ich erwartet habe, aber wenn ich einen parameter der Methode 1 der intercept-URLs wie diese:

<http>
    <http-basic/>

    <port-mappings>
        <port-mapping http="8080" https="8181"/>
    </port-mappings>

    <intercept-url pattern="/url1**" access="ROLE_ROLE1" requires-channel="https"/>
    <intercept-url pattern="/url2**" access="ROLE_ROLE2" method="GET"/>
    <intercept-url pattern="/url3**" access="ROLE_ROLE3" />
    <!-- <intercept-url pattern="/**" access="ROLE_ADMIN" />
</http>

Die basic-Authentifizierung ist deaktiviert für alle URLs außer die, die ich habe explizit gesetzt, wird die Methode auf (/url2).

Ist dies, wie soll es funktionieren, weil es scheint ein bisschen doof zu mir. Ist das ein bug?

  • Ich habe es ausprobiert und funktioniert einwandfrei.
  • also, wenn Sie gehen, um url1, werden Sie gefragt, für Ihre Authentifizierung info? Nicht nur, dass ich nicht sehen, dieses Feld, aber es geht nicht durch meine custom authentication manager. Welche version von spring security haben Sie? Ich bin mit 3.0.0.M2.
  • Getestet habe ich url3, weil ich nicht das einrichten eines https-connector für url1. Ich verwendet, spring security 2.0.4 von spring-security-Proben-tutorial-2.0.4.Krieg.
  • Ich habe das Gefühl, dass meine Anfrage nicht passend zu jedem der intercept-urls für einige Grund. Ich vermute, weil ich nicht speziell Liste der GET-Methode für url1, die Anfrage ist durch zu fallen. Ich war unter dem Eindruck, dass, wenn ich nicht Liste jede Methode sollte es passen Sie alle (wie im ersten Beispiel). Es scheint jedoch zu passen url1 irgendwann während der Anforderung, da bin ich immer Weiterleitung auf die https-url (also die "erfordert-Kanal" aufgerufen wird).
InformationsquelleAutor Vinnie | 2009-09-03
Schreibe einen Kommentar