0

我正在开发 Struts2 项目。在该项目中,用户可以登录并执行其正常工作。如果该用户打开新选项卡并输入我的项目 url,它将显示相同的页面(登录页面后)。如何实现上述场景?

4

1 回答 1

1

一种方法是像这里描述的那样,在一个与您几乎相同的问题中(概念相同,只有.NET上的实现不同)。

每次传入 Action 时计算一个唯一值,然后将其放入会话变量(即服务器端)并使用它来提供网页上的隐藏字段(即客户端)。

当页面将回传(提交)包含隐藏字段的表单时,您将查看页面字段和会话字段是否相同。

如果是:它是(唯一的或)打开的最后一页/选项卡。

如果否:您尝试从不是最后打开的页面的页面提交表单。

这样,您将始终只有一个 Web 应用程序实例,如果您在新页面/选项卡中打开 Web 应用程序的另一个实例,它将使前一个实例无效:只有最后一个打开的实例有效(因为多个隐藏字段,每个页面一个,但只有一个会话变量)。

如果您真的需要(是吗?)阻止用户打开新选项卡而不是确保 Web 应用程序的单个实例,请从这个原则开始工作并最终回到这里(使用一些代码更好)

于 2013-01-10T09:08:07.487 回答