【问题标题】:Shiro: Cannot invalidate HttpSessionShiro:无法使 HttpSession 无效
【发布时间】:2015-10-30 21:35:33
【问题描述】:

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

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

代码:

公共无效注销(){ SecurityUtils.getSubject().logout(); // 在这一行抛出异常 FacesContext.getCurrentInstance().getExternalContext().invalidateSession(); }

例外:

java.lang.IllegalStateException: org.apache.shiro.session.UnknownSessionException: 没有 ID 为 [22222] 的会话

如何使 HttpSession 无效,或者设置正确的 id?

【问题讨论】:

  • 完整的堆栈跟踪会很有用

标签: session jakarta-ee shiro httpsession


【解决方案1】:

通过实现 HttpSessionBindingListener 并创建 Shiro 会话到 http 会话的映射解决了这个问题。

【讨论】:

    【解决方案2】:

    SecurityUtils.getSubject().logout() 停止 DefaultSecurityManager.logout(Subject subject) 中的会话并使会话无效。所以在 logout() 调用后会话不能失效。

    【讨论】:

      猜你喜欢
      • 2014-02-06
      • 1970-01-01
      • 2013-10-09
      • 2019-02-22
      • 1970-01-01
      • 2016-10-24
      • 2018-11-09
      • 2013-12-11
      • 2014-05-02
      相关资源
      最近更新 更多