Xpages 在多NSF应用中,如何清除会话?

Xpages 在多NSF应用中,如何清除会话?,xpages,Xpages,当用户单击注销链接时,很容易清除当前数据库的会话范围映射: var iterator=sessionScope.keySet().iterator(); while (iterator.hasNext()) { sessionScope.remove(iterator.next()); } 但这只清除当前NSF的sessionScope变量,而不是服务器上的所有NSF。因此,如果他们随后以不同的用户身份登录,并导航到他们以前在浏览器会话期间访问过的其他NSF,那么浏览器会话仍然会为以前登录

当用户单击注销链接时,很容易清除当前数据库的会话范围映射:

var iterator=sessionScope.keySet().iterator();
while (iterator.hasNext()) {
  sessionScope.remove(iterator.next());
}
但这只清除当前NSF的sessionScope变量,而不是服务器上的所有NSF。因此,如果他们随后以不同的用户身份登录,并导航到他们以前在浏览器会话期间访问过的其他NSF,那么浏览器会话仍然会为以前登录的用户拾取会话范围内的变量

如果应用程序跨越多个NSF,如何从服务器上的所有NSF清除浏览器会话

更新


经过讨论,我从facesContext.getExternalContext().getRequest().getSession(false)获得了会话的控制权,然后对其调用invalidate()方法。这不起作用,它仍然具有相同的会话ID,并且保留了作用域变量。我认为是德克兰对饼干的想法造成的。我相信,Notes客户机也使用得相当严格。

< P>我不知道如何清除另一个数据库的SeaScess范围,但您可能会考虑另一种方法:将SeaSistCuriod初始化的用户的名称存储在SeaSee范围中,并将其与试图初始化它的用户的名称进行比较。如果名称不同,请清除sessionScope并再次初始化它。

浏览器端有一个名为“sessionID”的会话cookie


如果在注销过程中使该cookie无效/清除,会发生什么情况?

在清除会话范围后,是否将用户重定向到附加了“注销”的url?是的,我正在这样做。不过,作用域变量是由XSP命令管理器管理的,而不是由注销的DominoHTTP服务器管理的。我认为这是最好的选择。这是关键。我已经将代码添加到OpenNTF上的XSnippets中。要注销,代码如下:document.cookie=“SessionID=;path=/”;location.href=“./?注销”