2011-04-02 13 views
5

Parte de mi sitio debe ser accesible solo para usuarios autorizados. Supongamos que el usuario ingrese la página a.html que pertenece a la parte solo autorizada.¿Cuál es la forma correcta de implementar inicio de sesión con redirección utilizando JSF 2.0?

Si tuviera que usar servlets/JSP podría escribir un filtro que verificara si el usuario está conectado y si no, lo redireccionó a la página de inicio de sesión. Después de que un usuario de inicio de sesión exitoso sería redirigido a la página que quería alcanzar inicialmente, en este caso a.html. (La dirección de la página podría almacenarse en la solicitud).

¿Cuál es una forma correcta de implementar dicho escenario en JSF 2.0?

Respuesta

3

Simplemente hágalo de la misma manera, con un Filter. Es bueno saber que los beans gestionados con el ámbito de la sesión JSF están guardados como un atributo HttpSession con el nombre del bean administrado como clave.

Asumiendo que usted tiene un bean gestionado como esto:

@ManagedBean 
@SessionScoped 
public class UserManager { 

    private User user; 

    // ... 

    public boolean isLoggedIn() { 
     return (user != null); 
    } 

} 

A continuación, se puede comprobar en Filter#doFilter() de la siguiente manera:

UserManager userManager = (UserManager) ((HttpServletRequest) request).getSession().getAttribute("userManager"); 

if (userManager != null && userManager.isLoggedIn()) { 
    chain.doFilter(request, response); 
} else { 
    ((HttpServletResponse) response).sendRedirect("login.xhtml"); 
} 
+0

Sin embargo, ¿cómo debo poner en práctica lo siguiente: "Después de un inicio de sesión correcto el usuario sería redireccionado a la página que quería alcanzar inicialmente, en este caso a.html. "? –

+0

Lo siento, entendí que ya habías imaginado esa parte. Puede usar 'ExternalContext # redirect()' para enviar una redirección en JSF. – BalusC

+0

¿Qué supone que chain.doFilter haga? Gracias .. –

Cuestiones relacionadas