我正在开发Struts2项目。 在该项目中,用户可以登录并执行其正常工作。 如果该用户打开新选项卡并键入我的项目URL,它将显示相同的页面(登录页面后)。 如何实现上述方案?
答案 0 :(得分:1)
一种方式就像described here一样,在一个几乎与你相同的问题中(概念是相同的,只有.NET上的实现不同)。
每次传递Action时计算一个唯一值,然后放入 它在会话变量(即服务器端)中并使用它来提供 网页上的隐藏字段(即客户端)。
当页面回发(提交)包含隐藏字段的表单时,您 将查看页面字段和会话字段是否相同。
如果是:它是(唯一的OR)最后一页/标签打开。
如果不是:您正在尝试从不是的页面提交表单 最后一页打开。
这样,您将始终只有一个Web应用程序实例,如果您在新页面/选项卡中打开另一个Web应用程序实例,它将使前一个实例无效:只有最后打开的实例才有效(因为有多个隐藏字段,每个页面一个,但只有一个会话变量)。
如果您确实需要(是吗?)来阻止用户打开新标签而不是确保Web应用程序的单个实例,请从这个原则开始工作并最终返回此处(更好地使用某些代码)