这个网页有一个重定向循环Spring应用程序

时间:2013-05-02 18:59:44

标签: spring spring-mvc spring-security

我在以下环境中有一个Web应用程序。

  • Spring 3.2.2(最近从Spring 3.2.0升级)。
  • Spring Security 3.2.0 M1。
  • Hibernate 4.2.0 CR1。
  • Apache Tomcat 7.0.35.0。
  • Oracle 10g。
  • NetBeans 7.2.1 with jdk-7u11。

应用程序在此基本网址上运行:http://localhost:8080/wagafashion/。它没有问题,一切都很顺利。

由于我使用的是Spring安全性,因此登录页面的操作将映射为j_spring_security_check

成功登录后,如果我在地址栏中输入此URL:http://localhost:8080/wagafashion/j_spring_security_check(意外或故意),则页面将重定向到主页,第一页将提供给经过身份验证的用户,在谷歌浏览器中显示以下消息,

  

此网页有重定向循环

可以在以下snap shot中看到。

enter image description here 一旦发生这种情况,就无法访​​问任何页面我目前正在使用以下浏览器。

  • Google Chrome 26.0.1410.64 m
  • FireFox 20.0.1
  • Internet Explorer 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>

1 个答案:

答案 0 :(得分:1)

我尝试了你的设置,它给你的结果和你一样。为了解决这个问题,我做了这个,

在security.xml中更改:

<form-login login-page="/"...
<form-login login-page="/Login.htm"...