java - 如何通过 ID 手动杀死特定的 HttpSession

标签 java session jsf sessionid

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

我尝试使用以下方法:

public static void killSession(String sid) {

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

    session.invalidate();
}

但是

  1. HttpSessionContext 和 getSessionContext() 以及 session 的 getSession(sessionId) 方法均已弃用(出于看似偏执的安全原因)
  2. 上面的代码在 ApplicationScoped JSF 托管 bean 中调用时也会获取空 session

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

最佳答案

是的,出于安全原因,您无法使另一个 session session 无效。您可以做的就是手动将所有 session 存储在管理员可用的某些静态属性中。因此,用户登录后,您将他和他的 session 添加到此属性(通常是一个 Map/HashMap,其中用户作为 key session 作为)。

看看我的旧答案 here你就会明白了。

关于java - 如何通过 ID 手动杀死特定的 HttpSession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10631540/

相关文章:

jsf - 在 URL 中使用 & 会导致 XML 错误 : The reference to entity "foo" must end with the ';' delimiter

java - 为什么不对 JSF 页面进行预编译(至少部分),而是在每次构建 View 时对其进行解析和评估?

java - 通过json在python和java之间传递对象

java - 基于可变属性的TreeSet比较器

java - 如何使用带有Spring的java配置在拦截器中注入(inject) session 范围bean

php - 通过多个 ajax 调用更新 session

Java JasperReports条码打印

Java "Virtual Machine"与 Python "Interpreter"的说法?

c# - 使用 Windows.Devices.WiFi 的 UWP 应用程序

java - 需要 JSF outPutText 的特定 If Else 构造