我们需要从某种管理面板中终止特定 session (通过 session ID)的功能。
我尝试使用以下方法:
public static void killSession(String sid) {
HttpSessionContext sc = FacesUtil.getSession().getSessionContext();
HttpSession session=sc.getSession(sid);
session.invalidate();
}
但是
- HttpSessionContext 和 getSessionContext() 以及 session 的 getSession(sessionId) 方法均已弃用(出于看似偏执的安全原因)
- 上面的代码在 ApplicationScoped JSF 托管 bean 中调用时也会获取空 session
我正在寻找实现该功能的替代方法。
最佳答案
是的,出于安全原因,您无法使另一个 session
的 session
无效。您可以做的就是手动将所有 session
存储在管理员可用的某些静态属性
中。因此,用户登录后,您将他和他的 session
添加到此属性(通常是一个 Map/HashMap
,其中用户作为 key
和 session
作为值
)。
看看我的旧答案 here你就会明白了。
关于java - 如何通过 ID 手动杀死特定的 HttpSession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10631540/