2010-12-12 83 views
3

由于某些未知原因我无法在struts2上使用过滤器。我使用Apache Tomcat并使用过滤器来限制用户访问(我preffer而不是拦截器)。有没有任何理由为什么我的要求与/tela-paciente不被过滤?过滤器无法在Struts2中工作

<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> 

回答

2

您是否尝试过的过滤器映射设置 “/ TELA-paciente/*”(<url-pattern>/tela-paciente/*</url-pattern>)呢?

你的问题是一个tomcat的问题,没有什么特别的映射关系到struts。

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

有关过滤器的更多一般信息:它们被处理,除非其中一个过滤器通过不调用过滤器链来停止处理(这可能是这种情况 - 尽管如此,这应该是一种罕见的事情,只有在处理除了重定向URL或防止加载页面时,还有例外情况)。你可以有任意多的过滤器,只要你喜欢绑定重叠的URL集合。

+0

谢谢,它的工作。 – 2010-12-12 13:20:49

3

另一件需要记住的事情是,在你的例子中/ tela-paciente的映射发生在/ *(针对Struts2过滤器)的映射之后,因此所有的请求都将被映射到Struts2,安全过滤器。

请记住,您的过滤器的顺序很重要。 :)

@totaam:本StrutsPrepareAndExecuteFilter不会链上,除非其他的过滤器:

  • 的请求URL被struts.action.excludePattern属性排除在处理
  • 该请求不映射到的动作或静态资源

因此,假设他的请求映射到一个动作,那么如果它在Struts2过滤器之后被映射,他的安全过滤器将不会被调用。

相关问题