gpt4 book ai didi

session - 如何在用户单击返回时显示自定义 session 过期页面?

转载 作者:行者123 更新时间:2023-12-02 00:19:24 25 4
gpt4 key购买 nike

我有一个线性 Java EE 网络应用程序,它要求用户以线性方式跨多个页面输入数据。我在应用程序上设置了超时。 (我在超时之前也有一个 javascript 警报,以警告用户并在他们不想继续时重定向)。

这很好,除了我的问题是如果用户在 session 过期后单击他们的后退按钮,他们可以看到数据。我已经使用这个 SO 答案在某种程度上解决了这个问题:

Prevent user from seeing previously visited secured page after logout

但这不是自定义页面,如果 session 未过期也会发生。

只有在 session 已过期(最好没有 JS)时,我如何才能在用户点击返回后向用户显示自定义页面?

最佳答案

这是一个选项,要求您的 Web 应用程序使用 POST-REDIRECT-GET pattern它在许多 Web 框架中实现,例如 Spring Web Flow。

在这样的上下文中, session 过期后的后退意味着浏览器发送一个新的GET 请求并且您的服务器代码接收到一个新的HttpSession 。由于 向导 在第一页启动的 session 属性,您可以检测到这种情况:如果 GET 请求不是针对第一页并且 session 不包含该属性,这意味着 session 已因注销或过期超时而丢失。因此,您可以显示一个自定义页面来提醒用户他丢了工作,并将他引导至您的向导的第一页。

使用 POST-REDIRECT-GET 模式,浏览器的后退按钮不可能在不发送我提到的新 GET 请求的情况下显示具有最新输入的先前表单。

顺便说一下,如果你设计了很多这样的向导,我推荐你使用Spring Web Flow它仅包含在 Controller servlet 中,因此您可以使用任何 View 技术。

备选方案:可以避免数据丢失,这要归功于自定义持久性 cookie,该 cookie 存储(以明文或编码形式)用户在每次向服务器提交后在向导期间提供的所有信息。在那种情况下,即使 session 属性也没有用。但实现起来可能很复杂,因为有许多限制,例如最大 cookie 长度、cookie 数量或最大 HTTP header 行,因为所有 cookie 都在一行上发送...

关于session - 如何在用户单击返回时显示自定义 session 过期页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11647474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com