java - cerrar - sesiones jsf




Cómo cerrar sesión correctamente de una aplicación web Java EE 6 después de iniciar sesión (2)

Proceso de dos pasos -

1.crear la página de cierre de sesión
2.crear un bean de sesión con un método de cierre de sesión

PASO A: la página de cierre de sesión

<div class="mytext">
    <p>Hello #{userSession.username}, </p>
    <p><h:outputText value="It doesn't seem you're logged in anyway..." rendered="#{!userSession.userLoggedIn}" /></p>
</div>
    <h:form class="mytext" rendered="#{userSession.userLoggedIn}" >
        <h:panelGrid columns="2"  >
            <h:outputLabel value="Do you want to logout?" for="logout"  />
            <p:commandButton value="Logout" id="logout" action="#{userSession.logout}" />                                      
        </h:panelGrid>
    </h:form>

PASO B: Código de respaldo de beans de sesión (fragmento)

public String logout() {
    HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
    session.invalidate();
    return "/index?faces-redirect=true";
}

public boolean isUserLoggedIn() {
    String user = this.getUsername();
    boolean result = !((user == null)|| user.isEmpty());
    return result;
}

/** Get the login username if it exists */
public String getUsername() {
    String user = FacesContext.getCurrentInstance().getExternalContext().getRemoteUser();
    return user;
}    

Un requisito bastante simple. Después de iniciar sesión en la aplicación web J2EE 6, ¿cómo puedo hacer que el usuario cierre la sesión nuevamente?

La mayoría (¿todos?) De los libros y tutoriales que he visto muestran cómo agregar una página de login / loginerror a su aplicación y demostrar el uso de los principales / roles / dominios de seguridad, etc. usando el método "j_security_check", todo bien. Pero no está claro cómo darle al usuario la posibilidad de desconectarse. De hecho, ¿cómo puedo forzar un cierre de sesión después de, por ejemplo, que la sesión se agote, etc.?


Puede hacerlo mediante programación utilizando logout() HttpServletRequest de HttpServletRequest . También hay un método correspondiente para iniciar sesión con nombre de usuario y contraseña. Estos métodos se han agregado en Servlet 3.0, por lo que están disponibles en Java EE 6.

Un tiempo de espera es una bestia diferente y se puede especificar en web.xml siguiente manera:

<session-config>
  <session-timeout>30</session-timeout> 
</session-config>

La unidad de tiempo es minutos.





logout