当我点击同一个应用程序的新标签页(同一个网址)时,如何使会话无效?一旦我访问了相同的URL,就会打开现有会话。
我想开始不同的会话答案 0 :(得分:2)
对于会话/ cookie,浏览器目前不支持每个不同选项卡/窗口的单独cookie。
但是,有些框架具有Window的这个概念,因此使用它时可以在打开新窗口/选项卡时收到通知。一旦你能够检测到它,你就可以破坏旧的窗户。更新会话(或使其无效并创建新会话)将不会在另一个选项卡上产生所需的效果(即使您可以这样做),因为当用户转到另一个旧选项卡时,整个事情可能会重复。
您最好的选择是在一个会话中为用户保留多个窗口。
答案 1 :(得分:0)
如果您使用简单的servlet,可以使用以下代码,
// Get the existing session.
HttpSession session = request.getSession(false);
// Invalidate the existing session.
if(session!=null) {
session.invalidate();
}
您可以通过在web.xml中为新选项卡URL进行映射来调用此servlet。
答案 2 :(得分:0)
对不同标签/窗口中的不同会话使用网址重写。如果要使会话无效,则只需删除该用户以前的所有会话。唯一的问题是如果有人复制并粘贴了网址。如果这可能是一个问题,那么请以某种方式将会话密钥存储在HTML5存储中。
答案 3 :(得分:-1)
会话ID保存在cookie中,因此您不能同时在一个浏览器(新选项卡或新窗口 - 无关紧要)中为同一个应用程序创建两个不同的会话。
答案 4 :(得分:-1)
您的服务器会话使用HTTP会话进行映射。您不能在同一个浏览器中同时拥有两个HTTP会话...您如何识别已在新标签中按下“打开”并且他没有在同一个标签中打开该链接?你应该有一个AJAX ping(非常棘手......)