Réécriture du printemps de sécurité de l'Url de redirection

J'essaie de Tuckey UrlRewriteFilter pour ranger les Url pour ma webapp. Un problème que j'ai c'est que quand le printemps-avis de sécurité qu'un anonyme, un utilisateur tente d'accéder à une ressource protégée, elle redirige vers une URL qui comprend le chemin de la servlet.

Ce que j'aimerais c'est, par exemple:

> GET http://localhost:8080/my-context/protected-resource
< Location: http://localhost:8080/my-context/login

Ce que j'ai actuellement est:

> GET http://localhost:8080/my-context/protected-resource
< Location: http://localhost:8080/my-context/-/login

Documents pertinents que j'ai trouvé jusqu'à présent:

DefaultRedirectStrategy, qui effectue la redirection en question: http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/web/DefaultRedirectStrategy.html. Il a un contextRelative propriété qui est tentant, mais je ne pense pas aller à le couper, si je peux même trouver un moyen de le configurer.

Un billet de blog qui a aidé à obtenir de moi ce jour: http://nonrepeatable.blogspot.com/2009/11/using-spring-security-with-tuckey.html

Ce que j'aimerais savoir, c'est:

  1. Peux/dois-je convaincre Tuckey de réécrire l'Emplacement de l'en-tête. <sortant de la règle> ne semble pas aider tout ici.
  2. Peut/doit j'ai un peu bidouiller les SS config à émettre l'URL réécrite. Je ne pense pas que cela est tout aussi bien rangé, comme il avait briser si réécriture a été désactivé.

web.xml ressemble

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    <init-param>
        <param-name>LogLevel</param-name>
        <param-value>log4j</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>

<servlet>
    <servlet-name>my-servlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>psms</servlet-name>
    <url-pattern>/-/*</url-pattern>
</servlet-mapping>

urlrewrite.xml ressemble:

<urlrewrite>
    <rule>
        <from>^/(.*)$</from>
        <to>/-/$1</to>
    </rule>
</urlrewrite>

applicationContent-security.xml ressemble:

<http auto-config="true">
    <!-- allow GET requests to /login without authentication -->
    <intercept-url pattern="/-/login" method="GET" filters="none"/>

    <intercept-url pattern="/-/admin/**" access="ROLE_ADMIN"/>
    <intercept-url pattern="/-/**" access="ROLE_USER"/>

    <form-login login-page="/-/login"
                login-processing-url="/-/login.do"
                authentication-failure-url="/-/login?login_error"
                default-target-url="/-/index"
                always-use-default-target="true"/>

    <logout logout-url="/-/logout"
            logout-success-url="/-/login"/>

    <access-denied-handler error-page="/-/access-denied"/>
</http>
  • et le réglage de la page d'identification de l'attribut /login?
InformationsquelleAutor ptomli | 2009-11-19