我需要一些帮助处理Grails应用程序中的超时。
上下文:在我的Grails应用程序中,我显示了敏感信息。显然这意味着有人无法保持登录状态,如果他们忘记退出,我需要将其计时。我现在实现的是这样一个系统:
- 当用户成功登录时,会话变量isValid将设置为true。
- 在我的所有控制器中,如果调用了一个可以渲染或重定向到gsp的方法,我会检查该值。如果isValid在任何时候为空,则会立即将它们重定向到错误页面。
- 每个gsp都有一个jquery超时函数,如果用户超时并将isValid设置为false(理论上应该阻止他们使用该应用程序),会将用户重定向到超时错误页面。
重定向所有工作正常。我遇到的问题是,当用户超时时,他们仍然可以使用后退按钮返回到他们所在的最后一页的缓存版本。显然这违背了超时的目的。
问题:是否有人知道如何阻止用户离开超时页面或保证一旦超时,他们将始终被重定向到超时页面?
由于
答案 0 :(得分:1)
重定向所有工作正常。我遇到的问题是,当用户超时时,他们仍然可以使用后退按钮返回到他们所在的最后一页的缓存版本。显然这违背了超时的目的。
为什么不在页面加载时将一个AJAX请求添加回你的应用程序(当用户按下浏览器中的后退按钮时应该触发),验证会话是否仍然有效,如果没有将用户重定向到超时页面?应该够简单。
此外,如果信息是敏感的,请确保您设置缓存/内容过期相关的HTTP标头,以便浏览器知道它不应该缓存页面。这里的缺点是某些浏览器不完全尊重这些设置。