Shiro:无法使HttpSession无效

时间:2015-08-07 12:30:06

标签: session java-ee shiro 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?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

SecurityUtils.getSubject()。logout()从DefaultSecurityManager.logout(主题主题)停止并使会话无效。因此,在logout()调用之后,会话无法失效。