Cette page Web a une boucle de redirection dans l'application Spring-Security
j'ai une application web dans le printemps qui utilise la sécurité printemps, lorsque j'essaye d'exécuter l'application, il dit
This webpage has a redirect loop
c'est mon security-context.xml
après l'ajout de ce seul je reçois cette exception
<?xml version="1.0" encoding="UTF-8"?>
<b:beans xmlns="http://www.springframework.org/schema/security"
xmlns:b="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">
<!-- HTTP security configurations -->
<http use-expressions="true">
<form-login login-processing-url="/resources/j_spring_security_check"
login-page="/login" authentication-failure-url="/login?login_error=t" />
<logout logout-url="/resources/j_spring_security_logout" />
<intercept-url pattern="/**" access="isAuthenticated()" />
<intercept-url pattern="/login*" access="permitAll()" />
<intercept-url pattern="/resources/**" access="permitAll()" />
</http>
<!-- Configure Authentication mechanism -->
<authentication-manager alias="authenticationManager">
<authentication-provider>
<user-service>
<user name="admin" password="admin" authorities="RIGHT_LIST,RIGHT_CANCEL,RIGHT_CREATE,RIGHT_UPDATE" />
<user name="antony" password="antony" authorities="RIGHT_LIST,RIGHT_CANCEL,RIGHT_CREATE,RIGHT_UPDATE" />
<user name="rod" password="rod" authorities="RIGHT_LIST,RIGHT_CREATE"/>
</user-service>
</authentication-provider>
</authentication-manager>
<global-method-security secured-annotations="enabled" pre-post-annotations="enabled">
<expression-handler ref="expHandler"/>
</global-method-security>
<b:bean id="expHandler" class="org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler">
<b:property name="permissionEvaluator">
<b:bean class="com.anto.springsec.security.CreateContactPermissionEvaluator"/>
</b:property>
</b:bean>
</b:beans>
j'ai une connexion.jsp et un de plus createContact.jsp
c'est ma maison controler :
package com.anto.springsec.controllers;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
return "login";
}
}
merci de m'aider à résoudre ce problème.
source d'informationauteur Java Questions | 2013-03-19
Vous devez vous connecter pour publier un commentaire.
Je crois que l'ordre de
intercept-url
est important ici, et il semble que votre/**
modèle est à avaler/login
et/resources
trop.Essayez ceci:-
Cette configuration est très similaire à l'un de mes projets existants.
Mise à JOUR
C'est la configuration que j'utilise actuellement dans mon projet:-
03-19-13
Afin d'utiliser
security
attribut danshttp
tag, vous aurez besoin de Ressort de Sécurité 3.1... voir http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#new-3.1-nsEssayer cette
changement
<intercept-url pattern="/login*" access="permitAll()" />
à
OU
Que vous avez l'expression de vrai je pense que vous devez utiliser isAnonymous()
Voir les docs
d'interception url élément de dire que toute les demandes de la page de connexion devrait être disponible pour les utilisateurs anonymes. Sinon, la demande serait payée par le patron /** et il ne serait pas possible d'accéder à la page de connexion de lui-même! C'est une erreur de configuration et va provoquer une boucle infinie dans l'application. Pour en savoir plus ici