我在以下环境中有一个 Web 应用程序。
- Spring 3.2.2(最近从 Spring 3.2.0 升级)。
- Spring 安全 3.2.0 M1。
- 休眠 4.2.0 CR1。
- Apache Tomcat 7.0.35.0。
- 甲骨文 10g。
- 带有 jdk-7u11 的 NetBeans 7.2.1。
该应用程序在此基本 URL 上运行:http://localhost:8080/wagafashion/
. 它没有问题,一切都很好。
由于我使用的是 Spring 安全性,因此登录页面的操作映射为j_spring_security_check
.
成功登录后,如果我http://localhost:8080/wagafashion/j_spring_security_check
在地址栏中输入此 URL:(无意或有意),则页面将重定向到主页,即提供给经过身份验证的用户的第一页,在 Google Chrome 中显示以下消息,
此网页有重定向循环
从下面的快照中可以看出。
一旦发生这种情况,将无法访问任何页面。我目前正在使用以下浏览器。
- 谷歌浏览器 26.0.1410.64 m
- 火狐 20.0.1
- 互联网浏览器 8
这需要清除 cookie 以恢复应用程序。这可能是我的应用程序某处的问题吗?如何解决这个问题?
我的spring-security.xml
文件如下。
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="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.2.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<http pattern="/Login.htm*" security="none"></http>
<http auto-config='true' use-expressions="true" disable-url-rewriting="true">
<!--<remember-me key="myAppKey"/>-->
<session-management session-fixation-protection="newSession">
<concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
</session-management>
<intercept-url pattern="/admin_side/**" access="hasRole('ROLE_ADMIN')" requires-channel="any"/>
<form-login login-page="/" default-target-url="/admin_side/Home.htm" authentication-failure-url="/LoginFailed.htm" authentication-success-handler-ref="loginSuccessHandler"/>
<logout logout-success-url="/Login.htm" invalidate-session="true" delete-cookies="JSESSIONID"/>
</http>
<authentication-manager>
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="select email_id, password, enabled from user_table where lower(email_id)=lower(?)"
authorities-by-username-query="select ut.email_id, ur.authority from user_table ut, user_roles ur where ut.user_id=ur.user_id and lower(ut.email_id)=lower(?)"/>
</authentication-provider>
</authentication-manager>
<beans:bean id="loginSuccessHandler" class="loginsuccesshandler.LoginSuccessHandler"/>
<global-method-security secured-annotations="enabled" proxy-target-class="false">
<protect-pointcut expression="execution(* dao.*.*(..))" access="ROLE_ADMIN"/>
</global-method-security>
</beans:beans>