【问题标题】:HttpSession in Grails ApplicationGrails 应用程序中的 HttpSession
【发布时间】:2012-08-12 12:32:55
【问题描述】:

在我在 tomcat 7 上运行的 grails 应用程序中,我在某处使现有的 http 会话 (session.invalidate()) 无效并创建了一个新会话 (request.getSession(true))。

但是我的这个新会话并没有在 grails 应用程序中得到体现。因此,我确实得到了'Session already invalidated'。

我不想到处做request.getSession()。我只是在使用“会话”。

Grails 1.3.7 中有什么东西可以让这个新会话反映在应用程序的每个位置。

如果您需要更多信息,请告诉我。

问候

【问题讨论】:

    标签: java grails httpsession


    【解决方案1】:

    好吧,Grails 持有对会话对象的引用,每次您向它请求会话时,它都会返回相同的引用。因此,如果您使会话无效,然后再请求会话,它将返回相同的无效会话,并且导致“会话已失效”异常..

    这应该对你有用..

    在执行 session.invalidate 之后执行以下行

    //Trick - so that grails doesn't use old invalidated session but rather create new.
    GrailsWebRequest.lookup(request).session = null
    

    之后你就可以像平常一样使用会话了..你不需要自己创建一个新会话

    查看internals这个帖子

    【讨论】:

    • 答案很好。谢谢苏迪尔。
    猜你喜欢
    • 2016-09-24
    • 2011-09-22
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多