如何在 Grails 中实现超时页面

Posted

技术标签:

【中文标题】如何在 Grails 中实现超时页面【英文标题】:How to implement a timeout page in Grails 【发布时间】:2011-10-26 00:59:52 【问题描述】:

我需要一些帮助来处理 Grails 应用程序中的超时问题。

上下文:在我的 Grails 应用程序中,我显示了敏感信息。显然,这意味着某人无法保持登录状态,如果他们忘记注销,我需要让他们超时。我现在实现的是这样一个系统:

-当人登录成功时,一个会话变量isValid被设置为true。

-在我的所有控制器中,如果调用了可以呈现或重定向到 gsp 的方法,我会检查该值。如果任何时候 isValid 为 null,它们会立即被重定向到错误页面。

-每个 gsp 都有一个 jquery 超时功能,如果用户超时并将 isValid 设置为 false(理论上这应该阻止他们使用应用程序),则将用户重定向到超时错误页面。

重定向一切正常。我遇到的问题是,当用户超时时,他们仍然可以使用后退按钮返回到他们所在的最后一页的缓存版本。显然这违背了超时的目的。

问题:有谁知道我可以如何防止用户离开超时页面或保证一旦超时,他们将始终被重定向到超时页面?

谢谢

【问题讨论】:

【参考方案1】:

重定向一切正常。我遇到的问题是,当用户超时时,他们仍然可以使用后退按钮返回到他们所在的最后一页的缓存版本。显然这违背了超时的目的。

为什么不在页面加载时向您的应用添加一个 AJAX 请求(当用户按下浏览器中的后退按钮时应该触发该请求),以验证会话仍然有效,如果没有,则将用户重定向到超时页面?应该很简单。

此外,如果信息很敏感,请确保您设置了与缓存/内容过期相关的 HTTP 标头,以让浏览器知道它不应缓存页面。这里的缺点是一些浏览器不完全尊重这些设置。

【讨论】:

以上是关于如何在 Grails 中实现超时页面的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的项目中实现 Grails 的 Shiro 安全性

如何在 grails 中实现表单构建器插件

如何使用 shiro 在 grails 2.0 中实现 BasicHttpAuthentication?有啥亮眼的例子吗?

如何使用 spring-security-core-ldap 插件在 grails 中实现 LDAP 身份验证?

如何在android中实现请求超时?

如何在 C++ 中实现函数超时