1

我们需要从某种管理面板中终止特定会话(通过会话 ID)的功能。

我尝试使用以下方法:

public static void killSession(String sid) {

    HttpSessionContext sc = FacesUtil.getSession().getSessionContext();
    HttpSession session=sc.getSession(sid);        

    session.invalidate();
}

然而

  1. 会话的 HttpSessionContext 和 getSessionContext() 和 getSession(sessionId) 方法都已弃用(出于看似偏执的安全原因)
  2. 上面的代码在 ApplicationScoped JSF 托管 bean 中调用时也会得到一个空会话

我正在寻找实现该功能的替代方法。

4

1 回答 1

2

是的,由于安全原因,您不能session从其他人那里无效。session您可以做的是手动将所有内容存储sessions在一些static attribute可供管理员使用的内容中。所以用户登录,你将他和他添加session到这个属性中(通常是 aMap/HashMap和用户作为 akeysessionas value)。

在这里查看我的旧答案,您会有所了解。

于 2012-05-17T07:47:27.257 回答