2015-08-07 14 views
7

Ho una sessione Shiro (id = 11111) e una sessione http (id = 22222).Shiro: Impossibile invalidare HttpSession

Quando si tenta di invalidare HttpSession, viene utilizzato l'ID errato.

Codice:

 
public void logout() { 
     SecurityUtils.getSubject().logout(); 

// exception is thrown in this line 
FacesContext.getCurrentInstance().getExternalContext().invalidateSession(); 
    } 

Eccezione:

 
java.lang.IllegalStateException: 
org.apache.shiro.session.UnknownSessionException: 
There is no session with id [22222] 

Come posso invalidare HttpSession o meglio impostare l'ID corretto?

+1

La traccia di stack completa sarebbe utile –

risposta

1

Il problema è stato risolto implementando un HttpSessionBindingListener e creando una mappatura delle sessioni Shiro alle sessioni http.

0

SecurityUtils.getSubject(). Logout() interrompe e annulla la sessione da DefaultSecurityManager.logout (Oggetto soggetto). Quindi la sessione non può essere invalidata dopo la chiamata di logout().

Problemi correlati