# Spring Custom Login Page



## Tarantoga (23. Apr 2011)

Guten Tag und frohe Ostern,
ich habe mit Spring Security begonnen ein Web Projekt zu sichern. Habe da von null angefangen.
Bis zur automatischen Login-Page bin ich noch gekommen, aber jetzt scheitere ich.

[XML]<http auto-config="true" use-expressions="true" >

   <intercept-url pattern="/login.do" access="permitAll"  />
   <intercept-url pattern="/*" access="hasRole('ROLE_USER')"/>
   <form-login login-page="/login.do"/>

</http>[/XML]

Das ist der Ausschnitt aus dem Security XML File.

Ich bekomme aber andauernd den Fehler:

"WARNUNG: Anonymous access to the login page doesn't appear to be enabled. This is almost certainly an error. Please check your configuration allows unauthenticated access to the configured login page."

Die Page existiert, der Controller hat die richtige URL gemappt, aber es klappt nicht.
"permitAll" müsste doch den Zugang jedem Nutzer erlauben.

LG


----------



## Tatsu (28. Apr 2011)

Vielleicht bringt Dich das weiter. Spring FAQ 1.2

Grüße Bastian


----------



## gizmo (28. Apr 2011)

Eigentlich sagt es schon die Warnung. Ich glaube bei den Zugriffsregeln spielt die Reihenfolge eine Rolle. Versuch mal zuerst die Regel für "/*" zu schreiben, danach für "/login.do".


----------



## Tarantoga (28. Apr 2011)

Okay, ich glaube zwar ich hab das schon probiert, aber sicher ist sicher. 
Wobei zb. in meinem Spring Security 3 Buch steht, dass man die spezifischere Regeln zuerst schreiben muss.
Naja, vielleicht liegts an der Version. Ich probier's mal.
Danke euch beiden!


----------



## gizmo (28. Apr 2011)

Du hast recht... In den Beispielen wird der URL login.do noch ein * angehängt, siehe 2. Security Namespace Configuration

Ich würde es so probieren.


----------



## Tarantoga (28. Apr 2011)

Das klappt leider ebenfalls nicht, bin echt schon am Verzweifeln.


----------



## gizmo (29. Apr 2011)

In meiner Applikation habe ich es so gelöst, dass ich alles was nach dem Login kommt in einem Unterverzeichnis "secure" abgelegt habe.

Ich verwende dazu folgende Konfiguration:[XML]  <http auto-config="true" use-expressions="true">
    <!-- intercept-url pattern="/secure/**" access="ROLE_USER" requires-channel="https" -->
    <!--intercept-url pattern="${project.contextPath}/**" access="permitAll" /-->
    <intercept-url pattern="/secure/**" access="isAuthenticated()" />
    <form-login login-page="/login.zul"
      authentication-failure-url="/login.zul?login_error=1"
      default-target-url="/secure/" always-use-default-target="true" />
    <logout />
  </http>[/XML]


----------



## mvitz (29. Apr 2011)

In meinem letzten Projekt siehts folgendermaßen aus:

[XML]  <!-- SECURITY -->
  <sec:http auto-config="true" use-expressions="true">
    <sec:form-login login-processing-url="/resources/j_spring_security_check" login-page="/login" authentication-failure-url="/login?login_error=t"/>
    <sec:logout logout-url="/logout"  />
    <!-- Configure these elements to secure URIs in your application -->
    <sec:intercept-url pattern="/carparks/**"     access="hasRole('ROLE_ADMIN')" method="PUT" />
    <sec:intercept-url pattern="/carparks/**"     access="hasRole('ROLE_ADMIN')" method="POST" />
    <sec:intercept-url pattern="/carparks/**"     access="hasRole('ROLE_ADMIN')" method="DELETE" />
    <sec:intercept-url pattern="/carparks/*/edit" access="hasRole('ROLE_ADMIN')" method="GET" />
    <sec:intercept-url pattern="/carparks/new"    access="hasRole('ROLE_ADMIN')" method="GET" />
    <sec:intercept-url pattern="/**" access="permitAll" />
  </sec:http>[/XML]

Evtl mal das form vor die intercept-urls packen?


----------



## Tarantoga (22. Mai 2011)

Entschuldigt die späte Antwort,
finally habe ich es doch noch geschafft. Problem waren ein paar Versionsnummern und Mappings.


----------

