我有一个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?
答案 0 :(得分:1)
通过实现HttpSessionBindingListener并创建Shiro会话到http会话的映射来解决问题。
答案 1 :(得分:0)
SecurityUtils.getSubject()。logout()从DefaultSecurityManager.logout(主题主题)停止并使会话无效。因此,在logout()调用之后,会话无法失效。