3

如何繞過所有過濾器鏈?你怎麼能繞過木蘭CMS的過濾器鏈?

我希望繞過/web/開始的網址,以便春季調度員可以接收它們。

謝謝:)

+0

相關:http://forum.magnolia-cms.com/forum/thread.html?threadId=d7d48efd-87ca-4423-bd7b-4d5a9379f531 –

回答

0

有一件事我能想到的,是直接從您的過濾器調用servlet的調度方法service(..)。如何獲得調度員服務器 - 它應該被註冊爲spring bean,所以我想你可以從上下文中獲得它WebApplicationContextUtils

但這很醜。你應該更好地配置你的過濾器映射URL。實際上,一些過濾器不會繼續執行調度程序servlet的原因是什麼?

2

在Magnolia中,您可以配置/ server/filters中每個過濾器節點下的旁路或直接在該節點下繞過完整鏈路。 您也可以簡單地更改web.xml中的映射

+0

在我的web.xml中,我配置了servlet的開花(玉蘭模塊)。我創建了一個自定義模塊,我試圖在木蘭中加載spring。在這個模塊描述符中,我聲明它是spring的servlet。我希望在玉蘭過濾器鏈中添加一個旁路,就像你對完整鏈所說的那樣,這樣當url以/ web開始時,將請求指向spring servlet而不是開花的servlet。唯一的問題是,我真的不知道該怎麼做。這種方法好嗎?謝謝:) – Marius

+0

BlossomDispatcherServlet作爲Magnolia渲染頁面的一部分被調用,這裏沒有涉及到servlet容器。無法從外界訪問控制器。所以你不需要排除他們的路徑。如果你的意圖是添加一個控制器,應該可以從外部訪問(不用@Template或@Paragraph註釋),那麼我會建議你添加一個DispatcherServlet到你的模塊xml文件。您不需要將它從過濾器鏈中調用。 – sigget

1

要排除由Magnolia過濾器鏈處理的URI,請在Configuration中向/ server/webContainerResources /映射添加映射。

另一種選擇是在整個過濾器鏈上添加排除。這意味着過濾器鏈完全被繞過,而添加WebContainerResource映射意味着應用了一些過濾器。例如設置Magnolia背景的過濾器。

詳情請參閱技術指南中的Request processing and filters