Shiro:无法使 HttpSession 无效

Shiro: Cannot invalidate HttpSession

我有一个 Shiro 会话 (id=11111) 和一个 http 会话 (id=22222)。

当我尝试使 HttpSession 无效时,使用了错误的 ID。

代码:

public void logout() {
      SecurityUtils.getSubject().logout();

// exception is thrown in this line
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
    }

异常:

java.lang.IllegalStateException:
 org.apache.shiro.session.UnknownSessionException:
 There is no session with id [22222]

如何使 HttpSession 无效或设置正确的 ID?

问题已通过实施 HttpSessionBindingListener 并创建 Shiro 会话到 http 会话的映射得到解决。

SecurityUtils.getSubject().logout() 停止并使来自 DefaultSecurityManager.logout(Subject subject) 的会话无效。因此会话在 logout() 调用后无法失效。