由于某些未知原因,我无法在struts2上使用过滤器。我正在使用apache tomcat并使用过滤器来限制用户访问(我喜欢而不是拦截器)。有没有理由说我的/tela-paciente
请求没有被过滤?
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>Paciente</filter-name>
<filter-class>br.ufg.inf.sas.filtros.FiltroPaciente</filter-class>
</filter>
<filter-mapping>
<filter-name>Paciente</filter-name>
<url-pattern>/tela-paciente</url-pattern>
</filter-mapping>
答案 0 :(得分:3)
要记住的另一件事是,在您的示例中,/ tela-paciente的映射发生在/ *(对于Struts2过滤器)的映射之后,因此所有请求都将映射到Struts2,并且没有一个将转到您的安全性过滤
请记住,过滤器的顺序很重要。 :)
@totaam:StrutsPrepareAndExecuteFilter
不会链接到其他过滤器,除非:
struts.action.excludePattern
属性因此,假设他的请求映射到某个操作,如果在Struts2过滤器之后映射了安全过滤器,则不会调用他的安全过滤器。
答案 1 :(得分:2)
您是否尝试过滤映射设置为“/ tela-paciente / *”(<url-pattern>/tela-paciente/*</url-pattern>
)?
您的问题是一个tomcat问题,该特定映射中没有任何内容与struts相关。
Steven Benitez下面的陈述正确 - 我的不好(“没有人会去你的安全过滤器”)。
关于过滤器的更多一般信息:它们被处理,除非其中一个过滤器通过不调用过滤器链来停止处理(这可能就是这种情况 - 这应该是一种罕见的事情,仅在处理时使用)异常,重定向URL或阻止页面加载时)。您可以将多个过滤器绑定到重叠的URL集。