2012-11-07 150 views
3

我正在使用Tuckey的URL重寫過濾器與自制的安全過濾器相結合。在URLrewrite過濾器中過濾鏈條

<rule> 
    <name>User</name> 
    <from>^/user/$</from> 
    <to>/user.do</to> 
</rule> 

  • /*
  • 保安過濾器映射在 '/ *'

此外,URL重寫過濾器具有以下規則的URL重寫過濾器映射

對於像這樣的請求:myapp/user/我期待這個流程:

  1. 由URL重寫過濾器映射。請求URL(或Servlet路徑)變爲user.do
  2. 由安全性過濾器映射。驗證也許重定向
  3. 達到了映射的控制器user.do

然而,不知何故第二步躍升每當Tuckey的URL重寫適用的規則。這會導致非常不愉快的行爲,如訪問受保護的頁面而沒有正確的身份驗證。

有什麼我錯過了嗎?我應該期待另一種行爲?

回答

1

如果你這樣做type =「redirect」客戶端將被髮布302「臨時重定向」狀態,最終將瀏覽器重定向到新的url。

如果你希望用戶仍然可以看到老「」在瀏覽器的地址欄中的URL,嘗試添加這些到你的「安全性」過濾器:

<dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher>  
3

發生這種情況通常是因爲urlrewritefilter不會重定向url。它只是在內部轉發它。嘗試添加type =「redirect」作爲屬性,您的安全篩選器將捕獲重定向的請求。

<rule> 
    <name>User</name> 
    <from>^/user/$</from> 
    <to type="redirect">/user.do</to> 
</rule> 

以前爲我工作。