2010-12-12 122 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過濾器之後被映射,他的安全過濾器將不會被調用。

相關問題