我需要您如何解决此问题的建议。我在服务器上有一个带有grails安全性的grails Web服务,在客户端上有ext js网页。 session 超时(web.xml)为30分钟,并且在闲置时间之后,用户已成功登录。
现在,我需要从客户端(ajax)轮询以从服务器获取新信息。每隔2分钟就会在后台发生一次。 (推送服务在这里会很好,但我暂时无法使用...)
由于2分钟的请求间隔,因此30分钟的超时将永远不会达到,用户也不会自动注销。
如何在不扩展 session 的情况下创建ajax请求?
问候,
格雷斯范
请您参考如下方法:
一般来说,你不能。创建 session 后,当收到请求时,它将始终更新(lastAccessTime)。
您将必须自己实现此功能。我做了几次,并不难。
这个想法是,您使用System.currentTimeMillis()内的Grails before-Filter更新session.lastAccessMillis。更新仅应针对非XHR请求进行。然后,您还检查这种请求是否来得太晚,否则会使 session 无效。
就像是
class SessionTimeoutFilters {
def filters = {
all( uri:'/**' ){
before = {
if( request.xhr ) return
long now = System.currentTimeMillis()
if( !session.lastAccessMillis || TIMEOUT < now - session.lastAccessMillis )
session.lastAccessMillis = now
else
session.invalidate()
}
}
}
}
}




