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() 调用后无法失效。
我有一个 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() 调用后无法失效。