首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JBoss,GWT应用程序和基于表单的超时问题

JBoss,GWT应用程序和基于表单的超时问题
EN

Stack Overflow用户
提问于 2014-09-19 08:30:09
回答 1查看 442关注 0票数 0

我们的设置是部署了GWT应用程序的JBOSS通配符应用程序服务器。我们使用基于表单的auth,为了测试超时,我将web.xml中的会话超时更改为1分钟。

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

如果我在登录表单出现后立即登录(或在1分钟内),我将成功地登录回应用程序。这种模式,我可以一直坚持下去,只要我在乎。

但是,如果在登录表单出现后等待3-5分钟(在会话超时值之后),浏览器将被重定向到http://ourdomain/myapp/j_security_check (当我查看firefox /network时,状态代码为200 )。当我检查HTTP响应时,没有Location属性(通常是这样的)。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-19 08:55:30

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

无论如何,在Servlet规范中如何定义基于表单的身份验证(我从未考虑过,因此感谢您问了这个问题;-)这是一个缺陷,即使没有使用与会话相同的配置(规范没有强制使用会话,尽管大多数-if不是所有容器只使用会话),规范说(强调我的):

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

(注意:容器可能会在没有过期的情况下将信息存储在cookie中,这样就可以了,同时仍然遵循规范;容器开发人员在这么多年之后是不是太懒了?或者他们只是觉得不值得修理?)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25929546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档