2011-12-15 89 views
2

我有一个由两个模块组成的GWT应用程序:用于主要功能的“应用程序”和用于登录/忘记密码/注册新用户功能的“登录”。成功登录后用Spring Security导航到其他GWT模块

我使用Spring Security的用户重定向到Application.html上全成登录:

<security:http auto-config="true"> 
    <security:intercept-url pattern="/Application.html**" access="ROLE_USER"/> 
    <security:intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/> 
    <security:form-login login-page="/Login.html" default-target-url="/MainApplication.html" 
     always-use-default-target="true" authentication-failure-url="/Login.html?failed=true"/> 
</security:http> 

通过login.html的全成用户身份验证后,Application.html模块被加载和相应的请求进行到服务器,但浏览器内容保持不变,地址栏中的网址仍然是“Login.html”!

所以,问题是:为什么重定向不会发生?

在此先感谢!

回答

0

您正通过SpringSecurityFilter拦截Application.html,并将目标URL指定为MainApplication.html。在mainApplication.html中,请尝试将此代码放回到Application.html中,以便将其移回到Application.html。如果你需要,你可以在这里做一些授权。同时检查DelegatingFilterProxy是否在web.xml中正确设置。

我的配置如下。我在web.xml中

<filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

在我的welcome.jsp使用GWT应用

在我的jsp

<form name="login" action="<c:url value="j_spring_security_check"/>" method="POST"> 

<sec:authorize ifAnyGranted="<%=gRoles%>">  
    <meta http-equiv="REFRESH" content="0; url=demoApp/demoApp.jsp"> 
</sec:authorize> 

弹簧security.xml文件

<http auto-config="false" access-denied-page="/login.jsp?error=Access%20Denied"> 
    <intercept-url pattern="/login.jsp*" filters="none" /> 
    <intercept-url pattern="/demoApp/**" access="${app.roles}" /> 

    <form-login login-page="/login.jsp" 
       default-target-url="/welcome.jsp" 
       always-use-default-target="true" 
       authentication-failure-url="/login.jsp?error=true" /> 
    <logout logout-success-url="/login.jsp"/> 
    <anonymous/> 

+0

感谢您的回复。 我已经检查过web.xml中的spring安全 - 它与你的一样,似乎是正确的。 我已经按照你的建议添加了标记,并且有无限循环--Application.html发送重定向到Login.html,它将重定向发回到Application.html等等。 它的行为方式与弹簧安全性在加载“应用程序”模块期间拒绝访问某处的方式完全相同,但我确信在授权时一切正常 - 我已减少安全配置以启用对所有资源的匿名访问并打开DEBUG记录它。 – Valrog 2011-12-15 18:48:48