Shiro:无法使 HttpSession 无效
Posted
技术标签:
【中文标题】Shiro:无法使 HttpSession 无效【英文标题】:Shiro: Cannot invalidate 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?
【问题讨论】:
完整的堆栈跟踪会很有用 【参考方案1】:通过实现 HttpSessionBindingListener 并创建 Shiro 会话到 http 会话的映射解决了这个问题。
【讨论】:
【参考方案2】:SecurityUtils.getSubject().logout() 停止 DefaultSecurityManager.logout(Subject subject) 中的会话并使会话无效。所以在 logout() 调用后会话不能失效。
【讨论】:
以上是关于Shiro:无法使 HttpSession 无效的主要内容,如果未能解决你的问题,请参考以下文章
使Java HTTP会话无效以重定向到其他服务器,而无需将用户注销