es.mcu.yingo.filtros
Class FiltroInternet

java.lang.Object
  extended by org.springframework.web.filter.GenericFilterBean
      extended by org.springframework.web.filter.OncePerRequestFilter
          extended by es.mcu.yingo.filtros.FiltroAbstracto
              extended by es.mcu.yingo.filtros.FiltroInternet
All Implemented Interfaces:
javax.servlet.Filter, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.InitializingBean, org.springframework.web.context.ServletContextAware

public class FiltroInternet
extends FiltroAbstracto

Filtro internet. Sirve para que, cuando no existe el usuario en sesión, redirigir a un path dentro de la aplicación que se solicite autentificación cliente SSL. En ese path habrá configurado otro filtro que permitirá obtener el certificado del usuario y crear e incluir en la sesión un objeto Usuario
Si el párametro 'regexUrl' es diferente de nulo se comprueba primero si la url actual cumple la expresion regular cargada en este parámetro.
Si es así primero comprueba que la id de aplicación que tiene el usuario es la misma que la que está configurada en el parámetro idAplicacion. Si no es la misma limpia todos los objetos en sesión que tiene el usuario y coloca el id de aplicación en la sesión.
Después comprueba que existe el usuario en sesión.
Si el usuario no está en sesión le redirije a la url cargada en el atributo 'pathReenvio' anadiendo un parámetro PARAMETRO_VUELTA con el valor de la url actual.
Si no se cumple la expresión regular o si se cumple pero ya existe el usuario en sesión no se realiza ninguna redirección. Ejemplo de configuración:

                
                FiltroInternet
            es.mcu.yingo.filtros.FiltroInternet
                 
                        vistaError
                        /rcr/inter/error.form
                
                 
                        idAplicacion
                        recursos
                
                 
                        pathReenvio
                        /cert/rcr/index.jsp
                
                 
                        regexUrl
                        
                
        
  

Author:
miguel.esteban

Field Summary
private  java.lang.String idAplicacion
          Id de aplicación.
static java.lang.String PARAMETRO_VUELTA
          Cadena del parámetro al que se añadirá la url actual a la url de reenvío
private  java.lang.String parametrosASession
          Claves de los parámetros separadas por espacios que se colocarán en la sesión.
private  java.lang.String pathReenvio
          url al que se reenviará la petición
private  java.lang.String regexUrl
          Expresión regular que deberá cumplir la url actual para que pase por las siguientes validaciones del filtro
 
Fields inherited from class es.mcu.yingo.filtros.FiltroAbstracto
FILTRO_URL_VISTAERROR, logger, VISTA_ERROR, vistaError
 
Fields inherited from class org.springframework.web.filter.OncePerRequestFilter
ALREADY_FILTERED_SUFFIX
 
Constructor Summary
FiltroInternet()
           
 
Method Summary
private  boolean _doFilterInternal(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.FilterChain chain)
          Devuelve true si no hay que continuar con la cadenas de filtros.
private  void cargarParametrosEnSession(javax.servlet.http.HttpServletRequest request)
          Carga los parámetros que está definidos en el atributo parametrosASession que se pasan en el request y se quieren que esten disponibles por medio de sesión en la página de reenvío.
private  void colocarAplicacionSession(javax.servlet.http.HttpServletRequest request)
          Coloca en la sesión el id de aplicación.
protected  void doFilterInternal(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.FilterChain chain)
           
 java.lang.String getIdAplicacion()
           
 java.lang.String getParametrosASession()
           
 java.lang.String getPathReenvio()
           
 java.lang.String getRegexUrl()
           
private  java.lang.String obtenerReenviarUrl(javax.servlet.http.HttpServletRequest request, java.lang.String vuelta)
          Obtiene la url de reenvío a partir del xontextPath y del parámetro pathReenvio.
 void setIdAplicacion(java.lang.String idAplicacion)
           
 void setParametrosASession(java.lang.String parametrosASession)
           
 void setPathReenvio(java.lang.String pathReenvio)
           
 void setRegexUrl(java.lang.String regexUrl)
           
 
Methods inherited from class es.mcu.yingo.filtros.FiltroAbstracto
colocarParametroRequestVistaError, getVistaError, obtenerUrlActual, recogerError, setVistaError
 
Methods inherited from class org.springframework.web.filter.OncePerRequestFilter
doFilter, getAlreadyFilteredAttributeName, shouldNotFilter
 
Methods inherited from class org.springframework.web.filter.GenericFilterBean
addRequiredProperty, afterPropertiesSet, destroy, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setFilterConfig, setServletContext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

pathReenvio

private java.lang.String pathReenvio
url al que se reenviará la petición


regexUrl

private java.lang.String regexUrl
Expresión regular que deberá cumplir la url actual para que pase por las siguientes validaciones del filtro


idAplicacion

private java.lang.String idAplicacion
Id de aplicación. Si no es la misma que tiene el usuario en sesión se limpiará la sesión del usuario


PARAMETRO_VUELTA

public static final java.lang.String PARAMETRO_VUELTA
Cadena del parámetro al que se añadirá la url actual a la url de reenvío

See Also:
Constant Field Values

parametrosASession

private java.lang.String parametrosASession
Claves de los parámetros separadas por espacios que se colocarán en la sesión. No se añadirá nada si está definido a nulo o a la cadena vacía

Constructor Detail

FiltroInternet

public FiltroInternet()
Method Detail

doFilterInternal

protected void doFilterInternal(javax.servlet.http.HttpServletRequest request,
                                javax.servlet.http.HttpServletResponse response,
                                javax.servlet.FilterChain chain)
                         throws javax.servlet.ServletException,
                                java.io.IOException
Specified by:
doFilterInternal in class org.springframework.web.filter.OncePerRequestFilter
Throws:
javax.servlet.ServletException
java.io.IOException

_doFilterInternal

private boolean _doFilterInternal(javax.servlet.http.HttpServletRequest request,
                                  javax.servlet.http.HttpServletResponse response,
                                  javax.servlet.FilterChain chain)
                           throws SeguridadYingoException,
                                  java.io.IOException
Devuelve true si no hay que continuar con la cadenas de filtros. false en caso contrario
Si el párametro 'regexUrl' es diferente de nulo se comprueba primero si la url actual cumple la expresion regular cargada en este parámetro.
Si es así primero comprueba que la id de aplicación que tiene el usuario es la misma que la que está configurada en el parámetro idAplicacion. Si no es la misma limpia todos los objetos en sesión que tiene el usuario y coloca el id de aplicación en la sesión.
Después comprueba que existe el usuario en sesión.
Si el usuario no está en sesión le redirije a la url cargada en el atributo 'pathReenvio' anadiendo un parámetro PARAMETRO_VUELTA con el valor de la url actual.En este caso devuelve false
Si no se cumple la expresión regular o si se cumple pero ya existe el usuario en sesión no se realiza ninguna redirección y devuelv true.

Parameters:
request -
response -
chain -
Returns:
Throws:
SeguridadYingoException
java.io.IOException

cargarParametrosEnSession

private void cargarParametrosEnSession(javax.servlet.http.HttpServletRequest request)
Carga los parámetros que está definidos en el atributo parametrosASession que se pasan en el request y se quieren que esten disponibles por medio de sesión en la página de reenvío.

Parameters:
request -

obtenerReenviarUrl

private java.lang.String obtenerReenviarUrl(javax.servlet.http.HttpServletRequest request,
                                            java.lang.String vuelta)
Obtiene la url de reenvío a partir del xontextPath y del parámetro pathReenvio.
Al resultado se añade un parámetro PARAMETRO_VUELTA con el valor de vuelta

Parameters:
request -
vuelta -
Returns:

colocarAplicacionSession

private void colocarAplicacionSession(javax.servlet.http.HttpServletRequest request)
Coloca en la sesión el id de aplicación. Si el id de sesión es diferente al idDeSession del filtro limpia la sesión y coloca el nuevo id de sesión

Parameters:
request -

getIdAplicacion

public java.lang.String getIdAplicacion()
Returns:
Devuelve el atributo idAplicacion

setIdAplicacion

public void setIdAplicacion(java.lang.String idAplicacion)
Parameters:
idAplicacion - Carga el atributo idAplicacion

getRegexUrl

public java.lang.String getRegexUrl()
Returns:
Devuelve el atributo regexUrl

setRegexUrl

public void setRegexUrl(java.lang.String regexUrl)
Parameters:
regexUrl - Carga el atributo regexUrl

getPathReenvio

public java.lang.String getPathReenvio()
Returns:
Devuelve el atributo pathReenvio

setPathReenvio

public void setPathReenvio(java.lang.String pathReenvio)
Parameters:
pathReenvio - Carga el atributo pathReenvio

getParametrosASession

public java.lang.String getParametrosASession()
Returns:
Devuelve el atributo parametrosASession

setParametrosASession

public void setParametrosASession(java.lang.String parametrosASession)
Parameters:
parametrosASession - Carga el atributo parametrosASession