gpt4 book ai didi

javascript - Grails/Ext js:在不扩展 session 的情况下发出请求( session 超时)

转载 作者:行者123 更新时间:2023-12-02 14:11:41 25 4
gpt4 key购买 nike

我需要您如何解决此问题的建议。我在服务器上有一个带有grails安全性的grails Web服务,在客户端上有ext js网页。 session 超时(web.xml)为30分钟,并且在闲置时间之后,用户已成功登录。

现在,我需要从客户端(ajax)轮询以从服务器获取新信息。每隔2分钟就会在后台发生一次。 (推送服务在这里会很好,但我暂时无法使用...)

由于2分钟的请求间隔,因此30分钟的超时将永远不会达到,用户也不会自动注销。

  • 我在客户端使用 session cookie,该 session cookie随每个请求传送到服务器。
  • 在这个特定的ajax请求中,我还添加了BasicAuthentication参数,以防止spring security使用请求中的 session ID-但这不起作用。
  • 无法从此请求中删除JSESSION ID,它始终由浏览器添加。

  • 如何在不扩展 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()
    }
    }
    }
    }
    }

    关于javascript - Grails/Ext js:在不扩展 session 的情况下发出请求( session 超时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23648152/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com