0

我有一个基于 GWT 的企业 Web 应用程序,可以通过外部身份验证模块进行访问。我的问题是:

  • 我使用登录页面登录到应用程序。
  • 我被定向(使用反向代理规则)到我加载 GWT 应用程序的 Tomcat 服务器。
  • 使用该应用程序。
  • 我退出应用程序。
  • 当我尝试重新登录时,我没有进入登录页面。

如果我再次输入登录页面的 URL,浏览器会开始加载我无法访问登录页面的缓存数据。我必须点击重新加载才能进入登录页面。怎么会这样?F5 告诉浏览器不要使用缓存有什么特别之处?

我知道代理不会被我的任何请求击中,这意味着浏览器所做的只是加载缓存的元素。

有人有任何线索吗?

4

2 回答 2

1

我没有清楚地理解你的问题,但我想我有一个类似的问题。我希望它对你有帮助。

我有我的 GwtPage.html 和 web.xml 中保护的所有 GWT 东西。

当我第一次访问http://example.com/GwtPage.html时,容器的安全性将我发送到 login.jsp。登录完成后,我被发送到 GwtPage.html,所以一切都很好。

但是 GwtPage.html 第二次被浏览器缓存并且容器没有向我发送 login.jsp。所以我做了以下事情:我只用一行创建了 index.jsp:

<%
    response.sendRedirect("GwtPage.html");
%>

并将其添加到安全资源列表中。

浏览器不会缓存它,因此容器总是向我发送登录页面。

第二个好处是 GwtPage.html 仍然被浏览器缓存,这是非常好的,因为它很重。

我的 web.xml:

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<!-- Security -->
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Index Page</web-resource-name>
        <url-pattern>/index.jsp</url-pattern>
    </web-resource-collection>    
    <web-resource-collection>
        <web-resource-name>Main Page</web-resource-name>
        <url-pattern>/GwtPage.html</url-pattern>
    </web-resource-collection>
    <web-resource-collection>
        <web-resource-name>Gwt entrails</web-resource-name>
        <url-pattern>/Gwt/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>VIEWER</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>myrealm</realm-name>
    <form-login-config>
        <form-login-page>/LoginForm.jsp</form-login-page>
        <form-error-page>/LoginError.jsp</form-error-page>
    </form-login-config>
</login-config>
于 2012-06-17T15:28:12.453 回答
1

我有同样的问题。注销后 GWT 模块未启动。

<a id="logout" href="${pageContext.request.contextPath}/j_spring_security_logout">Logout</a>

解决方法很简单,打开登录页面前应该自动刷新

spring-security.xml中

<security:logout logout-success-url="/logout.html"/>

注销.html

<head lang="en">
  <meta http-equiv="REFRESH" content="0;  url=login.html">
</head>
于 2014-07-11T22:05:25.913 回答