2010-12-21 6 views
1

Ich kann viele Beispiele finden, die zeigen, wie Sie eine URL für die Verwendung des Authc-Filters konfigurieren, aber ich kann keine Beispiele für eine einfache Anmeldeseite finden, die angemessen wäre. Ich verwende die Spring-Integration zu Shiro, aber ich glaube nicht, dass das etwas mit meinem Problem zu tun hat.Shiro FormAuthenticationFilter Grundlagen Frage

Aus der Dokumentation zu lesen, habe ich meine Filter Fabrik wie auf den Punkt:

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> 
     <property name="loginUrl" value="/login.jsp" /> 
     <property name="successUrl" value="/Reports.jsp" /> 
     <property name="securityManager" ref="securityManager" /> 
     <property name="filterChainDefinitionMap"> 
       <map> 
         <entry key="/ws/**" value="authc" /> 
         <entry key="/Reports.jsp" value="authc" /> 
         <entry key="/**" value="anon" /> 
       </map> 
     </property> 
</bean> 

Ich werde Ihnen die gesamte XML-Datei ersparen. Ich kann sagen, dass es die richtigen Filter Aufnehmen ist, weil, wenn ich dies tun:

> curl -v localhost:8080/factorlab-web/Reports.jsp 

ich diese Antwort:

< HTTP/1.1 302 Found 
< Expires: Thu, 01 Jan 1970 00:00:00 GMT 
< Set-Cookie: JSESSIONID=19gdgnmukynb3;Path=/factorlab-web 
< Location: http://localhost:8080/factorlab-web/login.jsp;jsessionid=19gdgnmukynb3 
< Content-Length: 0 
< Server: Jetty(6.1.21) 
< 

So weit, so gut, nicht wahr? Allerdings, wenn ich den Benutzernamen und das Passwort einreiche, sollte ich den Inhalt von Reports.jsp bekommen, oder? Ich nicht. Wenn ich dies tun: * curl -v -d "username = Demo & Passwort = demo & rememberMe = false" http://localhost:8080/factorlab-web/Reports.jsp

ich die gleiche Antwort erhalten wie zuvor:

< HTTP/1.1 302 Found 
< Expires: Thu, 01 Jan 1970 00:00:00 GMT 
< Set-Cookie: JSESSIONID=qnidg37bqo9f;Path=/factorlab-web 
< Location: http://localhost:8080/factorlab-web/login.jsp;jsessionid=qnidg37bqo9f 
< Content-Length: 0 
< Server: Jetty(6.1.21) 
< 

Klar ich bin verwirrt entweder über die Konfiguration oder darüber, wie es funktionieren soll. Erstens, kann mir jemand sagen, was ich vom zweiten Curl-Befehl erwarten soll, oder warum ich nicht sehe, was ich erwarte?

Zweitens gibt es eine kleine Probe mit einem login.jsp (oder ähnlichem), wo ich sehen konnte, was passiert, wenn ein Benutzer: * geht explizit auf die Login-Seite * auf die Login-Seite automatisch gerichtet (zB Protokollierung In bringt Sie zurück zur ursprünglichen versuchten Seite). * Sendet falschen Benutzernamen und Passwort von der Login-Seite.

Antwort

1

Hier war meine Verwirrung: Übergeben Sie Ihre Anmeldeinformationen nicht an etwas anderes als LoginUrl. In meinem Fall sollte der Formulareintrag in meiner login.jsp keinen anderen Endpunkt angeben. In dem obigen Beispiel, anstatt

curl -v -d "username=demo&password=demo&rememberMe=false" http://localhost:8080/factorlab-web/Reports.jsp 

I

curl -v -d "username=demo&password=demo&rememberMe=false" http://localhost:8080/factorlab-web/login.jsp 

getestet haben sollten, die zurückkehren wird:

< HTTP/1.1 302 Found 
< Expires: Thu, 01 Jan 1970 00:00:00 GMT 
< Set-Cookie: JSESSIONID=1bug6rem2iecb;Path=/factorlab 
< Set-Cookie: rememberMe=deleteMe; Path=/factorlab; Expires=Mon, 16-May-2011 00:32:27 GMT 
< Location: http://localhost:8080/factorlab/Reports.jsp;jsessionid=1bug6rem2iecb 
< Content-Length: 0 
< Server: Jetty(6.1.21) 
<