Session 从服务器端打开模式,grails

Session 从服务器端打开模式,grails,session,grails,modal-dialog,Session,Grails,Modal Dialog,我试图在会话过期后显示模态。我正在使用筛选器捕获已过期的会话: def filters = { all(controller:'graphs', action:'*') { before = { if (session.expired) { //some code to invoker modal return false } }

我试图在会话过期后显示模态。我正在使用筛选器捕获已过期的会话:

def filters = {
    all(controller:'graphs', action:'*') {
        before = {
            if (session.expired) {
                //some code to invoker modal
                return false
             }
        }           
    }
}

Modal应通知用户会话已过期,并重定向到主页。关于如何调用modal的任何建议?

您的建议很难实现,因为您需要客户端发起的请求或会话来向客户端传输任何内容,并且任何此类请求都会延长会话。我认为有两种可能性:

投票 如果您不介意延长会话时间,只想确保用户仍然以最简单的方式登录,那么可以使用
setInterval
或类似工具实现Javascript轮询(但请确保轮询在第一次失败时停止,或者用户在再次登录后有被重定向到轮询终结点的风险,尤其是当他们打开了多个选项卡时)。如果不想延长会话,可以尝试使用

网袋 您可以使用适当的连接打开websocket连接并保持其打开状态。您需要确保没有发送延长会话的心跳。然后,当会话结束时,通过连接发回消息。请注意,这将涉及比轮询更多的工作