session - 从服务器端打开模式,grails

标签 session grails modal-dialog

我想在 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/

相关文章:

java - 在 Spring 中销毁的 Session 上调用 Listener 类中的服务层函数

java - Grails 相当于 Gradle Eclipse 插件吗?

grails - 运行grails命令行时出错

javascript - 打印模态窗口的全部内容

javascript - 内容更改时 Bootstrap 模式调整大小

java - 自动关闭对话框

session 未进入 session Tomcat 的单点登录

node.js - Passport 不会保存在 session 变量中。导航后 req.user 不存在

grails - 如何将 "non-mavenized"jar 依赖项添加到 grails 项目

c# - 编辑时防止重复编辑/锁定数据库记录 - 单个后端服务器