Форма входа в систему безопасности весной не работает
У меня проблема с Spring Security в форме входа в систему: они не могут найти URL входа, даже если я укажу им путь
<form-login login-page="/login" default-target-url="/index" />
когда я выполняю браузер дает :\ :
Cette page Web présente und boucle de redirection.
Английский перевод выше, чтобы помочь отладке:
This web page has a redirect loop.
это контроллер:
@Controller
public class LoginController{
@RequestMapping("/login")
public String doLogin() {
return "login";
}
}
это spring-security.xml
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xmlns:beans="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx/spring-tx.xsd" >
<http pattern="/images/**" security="none"/>
<http pattern="/styles/**" security="none"/>
<http pattern="/js/**" security="none"/>
<http pattern="/login" security="none" />
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/**" access="isAuthenticated()"/>
<form-login login-page="/login.jsp" default-target-url="/index" authentication-failure-url="/login" />
<logout logout-url="/logout" logout-success-url="/index"/>
</http>
<beans:bean id="daoAuthenticationProvider" class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
<beans:property name="userDetailsService" ref="userDetailsService" ></beans:property>
</beans:bean>
<beans:bean id="authenticationManager" class="org.springframework.security.authentication.ProviderManager">
<beans:property name="providers">
<beans:list>
<beans:ref local="daoAuthenticationProvider"/>
</beans:list>
</beans:property>
</beans:bean>
<beans:bean id="userDetailsService" class="com.UserDetailsServiceImpl"></beans:bean>
<authentication-manager>
<authentication-provider user-service-ref="userDetailsService">
<password-encoder hash="md5"></password-encoder>
</authentication-provider>
</authentication-manager>
</beans:beans>
1 ответ
РЕДАКТИРОВАТЬ 1: на основе пользовательского ввода
Измените следующую строку
<intercept-url pattern="/**" access="isAuthenticated()"/>
к чему-то в этом роде
или же
<intercept-url pattern="/**" access="hasRole('USER_ADMIN')"/>
По сути, исключаем isAuthenticated() из него, так как при чтении конфигураций XML мало кто сталкивался с проблемами.
Дайте мне знать, если это исправит.
Дополнительные примеры: Spring Security не будет перенаправлять на URL-адрес перехвата