Cq5.5 aplicando un filtro de servlet a una ruta específica
Estoy trabajando en un controlador de formulario personalizado en cq5.5 y todo va bien. Ahora estoy trabajando para bloquear parte de la seguridad y una de mis tareas es implementar un filtro de limitación de solicitudes en la ruta de los manejadores de formularios.
Actualmente tengo algo como
@Component(immediate = true, metatype = true)
@Service(javax.servlet.Filter.class)
@Properties({
@Property(name="service.pid", value="com.xxxxxx.cq.core.filter.FormFilter",propertyPrivate=false),
@Property(name="service.description",value="FormFilter", propertyPrivate=false),
@Property(name="service.vendor",value="xxxxxx - Microsites", propertyPrivate=false),
@Property(name = "filter.scope", value = "request"),
@Property(name = "sling.filter.scope", value = "request"),
@Property(name = "service.ranking", intValue = 100001)
})
public class FormFilter implements javax.servlet.Filter {
private Logger LOGGER = LoggerFactory.getLogger(TrackingFilter.class.getName());
private static final Object lock = new Object();
@Override
public void doFilter(ServletRequest pRequest, ServletResponse pResponse, FilterChain pChain) throws IOException, ServletException {
//my filter stuff
}
}
Esto funciona bien, pero me gustaría bloquearlo para que solo se ejecute en una ruta específica.
gracias por cualquier idea
---- EDICIÓN ----- Después de investigar más, encontré algunas publicaciones que indican que no hay forma de registrar un filtro en una ruta específica para el controlador ServletFilter predeterminado. Básicamente, las dos soluciones a este problema que encontré fueron crear un nuevo paquete OSGI para el filtro y registrarlo con el servicio ExtHTTPS o Whiteboard:
http://felix.apache.org/documentation/subprojects/apache-felix-http-service.html
O
Filtra la url dentro del propio filtro. Básicamente, agregue un cheque para la ruta especificada en mi filtro.
es decir:
@Override
public void doFilter(ServletRequest pRequest, ServletResponse pResponse, FilterChain pChain) throws IOException, ServletException {
String path = pRequest.getContextPath();
if (path.contains("my/matching/path")
{
//my filter stuff
}
}
Me encantaría ver si hay soluciones adicionales para este problema, pero quería compartir lo que he podido encontrar hasta el momento, con la esperanza de que esto ayude a generar más ideas o simplemente ayude a alguien con el mismo problema. tiempo en la búsqueda de google.
gracias brodie