我们需要一种从某种管理面板中终止特定会话(按会话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中调用时,上面的代码也获得了空会话
我正在寻找实现功能的替代方法。
最佳答案
是的,由于安全原因,您不能使另一个session
的session
失效。您可以做的是将所有sessions
手动存储在可供管理员使用的某些static attribute
中。因此,用户登录后,您将他和他的session
添加到该属性(通常是Map/HashMap
,其中用户为key
,session
为value
)。
看看我以前的答案here,您会有所了解。