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

我尝试使用以下方法:

public static void killSession(String sid) {

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

    session.invalidate();
}


然而


HttpSessionContext,getSessionContext()和
会话的getSession(sessionId)方法均已弃用(出于看似偏执的安全原因)
在ApplicationScoped JSF托管Bean中调用时,上面的代码也获得了空会话


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

最佳答案

是的,由于安全原因,您不能使另一个sessionsession失效。您可以做的是将所有sessions手动存储在可供管理员使用的某些static attribute中。因此,用户登录后,您将他和他的session添加到该属性(通常是Map/HashMap,其中用户为keysessionvalue)。

看看我以前的答案here,您会有所了解。

10-07 13:49