J'ai une application Spring (version Spring 2.5.6.SEC01, la version Spring Security 2.0.5) avec la configuration suivante:Boucle infinie en utilisant Spring Security - Login est protégée même si elle doit autoriser l'accès anonyme
web.xml
<welcome-file-list>
<welcome-file>
index.jsp
</welcome-file>
</welcome-file-list>
la page index.jsp est dans le répertoire WebContent et contient simplement une redirection:
<c:redirect url="/login.htm"/>
Dans le appname-servlet.xml, il y a un résolveur de vue de pointer vers les pages jsp dans WEB-INF/jsp
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
Dans le fichier sécurité config.xml , j'ai la configuration suivante:
<http>
<!-- Restrict URLs based on role -->
<intercept-url pattern="/WEB-INF/jsp/login.jsp*" access="ROLE_ANONYMOUS" />
<intercept-url pattern="/WEB-INF/jsp/header.jsp*" access="ROLE_ANONYMOUS" />
<intercept-url pattern="/WEB-INF/jsp/footer.jsp*" access="ROLE_ANONYMOUS" />
<intercept-url pattern="/login*" access="ROLE_ANONYMOUS" />
<intercept-url pattern="/index.jsp" access="ROLE_ANONYMOUS" />
<intercept-url pattern="/logoutSuccess*" access="ROLE_ANONYMOUS" />
<intercept-url pattern="/css/**" filters="none" />
<intercept-url pattern="/images/**" filters="none" />
<intercept-url pattern="/**" access="ROLE_ANONYMOUS" />
<form-login login-page="/login.jsp"/>
</http>
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource" />
</authentication-provider>
Cependant, je ne peux même pas accéder à la page de connexion et d'obtenir l'erreur suivante dans le journal:
WARNING: The login page is being protected by the filter chain, but you don't appear to have anonymous authentication enabled. This is almost certainly an error.
J'ai essayé de changer le ROLE_ANONYMOUS à IS_AUTHENTICATED_ANONYMOUSLY, en changeant la connexion page à index.jsp, login.htm, et en ajoutant des valeurs différentes interception url, mais je ne peux pas si la page de connexion est accessible et la sécurité s'applique aux autres pages. Que dois-je changer pour éviter cette boucle?
Mettez le niveau de connexion à DEBUG et publiez-le ici. – rodrigoap