如何在 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 中实现超时页面的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 shiro 在 grails 2.0 中实现 BasicHttpAuthentication?有啥亮眼的例子吗?