我想在 session 过期后显示模式。我正在使用过滤器来捕获该 session 已过期:
def filters = {
all(controller:'graphs', action:'*') {
before = {
if (session.expired) {
//some code to invoker modal
return false
}
}
}
}
模态应该通知用户 session 已过期并重定向到主页。关于如何调用模式的任何建议?
最佳答案
您提出的建议实施起来非常棘手,因为您需要客户端发起的请求或 session 才能将任何内容传输到客户端,并且任何此类请求都会延长 session 。我看到两种可能性:
轮询
如果您不介意延长 session 时间,而只是想确保用户仍以最简单的方式登录,则可以使用setInterval
或类似方法实施Javascript轮询(但请确保在首次失败时停止轮询,否则用户将面临风险再次登录后重定向到轮询端点,尤其是当它们打开了多个标签时。如果您不想延长 session 时间,则可以尝试hacky workaround。
网络套接字
您可以使用适当的plugin打开websocket连接并保持打开状态。您需要确保没有发送任何会延长心跳的 session 。然后,当 session 结束时,通过连接发送回一条消息。请注意,这将比轮询涉及更多的工作。
关于session - 从服务器端打开模式,grails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27146558/