filter在Struts2中不起作用

由于某种未知的原因,我无法在struts2上使用filter。 我正在使用apache tomcat并使用filter限制用户访问(我喜欢而不是拦截器)。 有没有理由为什么我的/tela-paciente请求没有被过滤?

   struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter   struts2 /*   Paciente br.ufg.inf.sas.filtros.FiltroPaciente   Paciente /tela-paciente  

您是否尝试将filter映射设置为“/ tela-paciente / *”( /tela-paciente/* )?

您的问题是一个tomcat问题,该特定映射中没有任何内容与struts相关。

Steven Benitez下面的陈述是正确的 – 我的不好(“没有人会去你的安全filter”)。

关于filter的更一般信息:它们被处理,除非其中一个filter通过不调用filter链来停止处理(这可能就是这种情况 – 这应该是一种罕见的事情,仅在处理exception时使用,当重定向URL或阻止页面加载)。 您可以将任意数量的filter绑定到重叠的URL集。

另外要记住的是,在您的示例中,/ tela-paciente的映射发生在/ *(对于Struts2filter)的映射之后,因此所有请求都将映射到Struts2,并且没有任何请求将转到您的安全filter。

请记住,filter的顺序很重要。 🙂

@totaam: StrutsPrepareAndExecuteFilter不链接到其他filter,除非:

  • 请求URL由struts.action.excludePattern属性排除在处理之外
  • 请求不会映射到操作或静态资源

因此,假设他的请求映射到某个操作,如果它在Struts2filter之后映射,则不会调用其安全filter。