Vistas de página en total

lunes, 15 de diciembre de 2014

Url´s permitidas sin inicio de sesion

En las apliacaciones web habra paginas en donde el usuario podra accesar sin la necesidad de tener una sesion inicializada esto mas que nada por publicidad. ¿Porque? simple primero por publicidad debes mostrar y atrapar al cliente solo mostrando poca informacion y una vez cautivado el usuario debe registrarse e iniciar sesion para poder visualizar todo jeje asi que manos a la obra, en este caso teniamos que solo el home esta habilitado pero no el formulario para que se puedan registrar asi que modificaremos un poco nuestra clase de filtro de url y quedara asi:

//definimos a que url se va aplicar la restricción en este caso a todas las peticiones url
@WebFilter("*.xhtml")
//implementamos el filtro de servlet y agremos los metodos abstractos
public class SessionUrlFliters implements Filter{
    //agregamos una variable filterConfig
    FilterConfig fc;
           
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        //hacemos que la variable sea igual al filter config que recibe del index o home
        fc = filterConfig;
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        /*restriccion de urls*/
        //agregamos el httpservletrequest haciendolo un casting e igualando al request que recibe como parametro de doFilter
        HttpServletRequest req = (HttpServletRequest) request;
        //agregamos el httpservletresponse haciendolo un casting e igualando al response que recibe como parametro de doFilter
        HttpServletResponse res = (HttpServletResponse) response;
        //sesion para recuperar las url que van llegando y hacer la comparacion
        HttpSession session = req.getSession(true);
        //variable para recibir la url de la peticion que sera igualado la variable req
        String reqUrl = req.getRequestURL().toString();
        //variable de acceso para loguearse en el sistema aqui pueden ir todas las url para accesar sin necesidad de comenzar sesion
        //y por ende sera un array
        String [] urlPermissions = new String[]{
            //definimos el index o home (pagina de inicio)
            "/faces/home.xhtml",
            //definimos el formulario
            "/faces/User/RegisterUser.xhtml"
        };
        //hacemos la condicional el cual modificaremos en el Bean y la variable donde esta el url es diferente a la consecuencia
        if(session.getAttribute("userName") == null){
            //agregamos una variable para la redirreccion de tipo booleano
            boolean redirectionRequets = true;
            //comprobacion en un bucle for de las url permitidas sin sesion
            for(String item : urlPermissions){
                //si contiene el item que son las url permitidas sin sesion
                if(reqUrl.contains(item)){
                    //hacer la variable redirectionRequets falsa
                    redirectionRequets = false;
                    //una vez hecho esto finalizamos el ciclo for
                    break;
                }
            }
            //hacemos la redireccion hacia home.xhtml desde la raiz y concatenamos
            if(redirectionRequets){
                res.sendRedirect(req.getContextPath()+"/faces/home.xhtml");
            }else{
                //permitimos la direccion
                chain.doFilter(request, response);
            }
        }else{
            //permitimos la direccion
            chain.doFilter(request, response);
        }
    }
    @Override
    public void destroy() {
        //borramos el filter config
        fc=null;
    }
   
}


Asi tenemos habilitado el formulario para los registros.

No hay comentarios:

Publicar un comentario