2012-03-20 74 views
1

我使用的是Stripes 1.5,我使用的是攔截器(基於this example),以防止未經授權訪問*.action頁面。使用條紋攔截器來防止訪問其他servlet

現在我想使用相同的攔截器來防止訪問一個servlet。

我已經添加了這個這個web.xml中(DisplayChart是我要保護這個servlet):

<filter-mapping> 
    <filter-name>StripesFilter</filter-name> 
    <servlet-name>DisplayChart</servlet-name> 
    <dispatcher>REQUEST</dispatcher> 
</filter-mapping> 

但它不工作,accesing的時候攔截intercept方法不執行DisplayChart servlet路徑(即使我@Intercepts全部LifeCycleStage)。

有沒有一種方法來攔截器執行時,另一個servlet被認可?或條紋過濾器不打算以這種方式使用(我將不得不使用普通的Filter)?

回答

1

我不知道是否可以將Stripes攔截器應用於非Stripes servlet。

但我確定你不應該。

條紋攔截器特定於Stripes和Stripes的請求生命週期。對普通servlet的請求不是Stripes請求,即使通過Stripes過濾器也不會經過此生命週期。這樣的請求不應該使用Stripes攔截器,即使這是可能的。

我建議你將Stripes攔截器中的授權代碼分解爲Stripes不可知的服務類,然後編寫一個使用該類的標準過濾器。你的條紋攔截器和你的過濾器是非常小的代碼交給服務。

1

Stripes過濾器不能像那樣使用,因爲Stripes過濾器實際上是Stripes前端控制器,它只調度到動作bean並且可能是Stripes攔截器。

因此,正如你已經假設,你需要一個常規的servlet過濾器。