JBoss、GWT应用程序和基于表单的身份验证超时问题

JBoss、GWT应用程序和基于表单的身份验证超时问题,gwt,jboss,session-timeout,form-authentication,j-security-check,Gwt,Jboss,Session Timeout,Form Authentication,J Security Check,我们的设置是一个部署了GWT应用程序的JBOSS wildfly应用程序服务器。我们使用基于表单的身份验证,为了测试超时,我将web.xml中的会话超时更改为1分钟 因此,我登录到应用程序并等待>1分钟,然后执行我知道将触发RPC调用的操作,该操作将失败,因为会话已过期。我们捕获异常并执行页面重新加载以触发登录表单的出现 如果我在登录表单出现后立即登录(或在1分钟内),我将成功重新登录到应用程序。这种模式,我可以继续,只要我喜欢 但是如果在登录表单出现后等待3-5分钟(在会话超时值之后),浏览器

我们的设置是一个部署了GWT应用程序的JBOSS wildfly应用程序服务器。我们使用基于表单的身份验证,为了测试超时,我将web.xml中的会话超时更改为1分钟

因此,我登录到应用程序并等待>1分钟,然后执行我知道将触发RPC调用的操作,该操作将失败,因为会话已过期。我们捕获异常并执行页面重新加载以触发登录表单的出现

如果我在登录表单出现后立即登录(或在1分钟内),我将成功重新登录到应用程序。这种模式,我可以继续,只要我喜欢

但是如果在登录表单出现后等待3-5分钟(在会话超时值之后),浏览器将重定向到
http://ourdomain/myapp/j_security_check
(当我查看firefox开发者/网络工具时,状态代码是200)。当我检查HTTP响应时,没有位置属性(通常有)


谁能告诉我这是为什么?j_security_check servlet是否有超时,用户需要在显示登录表单后x分钟登录,并且它是否连接到web.xml中的会话超时?

基于表单的身份验证使用会话并在该会话中存储“最初请求的URL”。登录时,将从会话中读取URL并将其用作重定向的目标。因此,如果在登录表单显示后等待“太久”,导致会话超时,那么您就丢失了数据,服务器不知道将您重定向到何处

无论如何,这是Servlets规范中基于表单的身份验证定义中的一个缺陷(我从来没有考虑过,所以感谢您提出这个问题;-),即使没有使用与会话相同的配置(规范没有强制使用会话,尽管大多数(如果不是全部的话)容器只使用会话),说明书上说(我的重点):

将与安全约束关联的登录表单发送给客户端和 触发身份验证的URL路径和HTTP协议方法存储在 容器。
[…]
如果身份验证成功,则使用存储将客户端重定向到资源 URL路径。
[…]
如果由于HTTP请求而调用基于表单的登录,则原始请求 容器必须保留参数,以便在成功时使用 身份验证时,它会将调用重定向到请求的资源

(注意:容器可能会将信息存储在一个cookie中而不过期,那么这就行了,同时仍然遵循规范;容器开发人员是不是在这么多年后懒得做正确的事情?还是他们只是认为它不值得修复?

谢谢你的回答:)这对我来说确实很奇怪,这种情况没有得到更好的处理。