2014-03-13 166 views
1

在我的c#web應用程序中,我需要攔截所有傳入請求(get)來測試URL是否爲包含特定文件名(不是文件類型或擴展名)或字符串,根據這些信息,我需要檢查用戶的身份驗證和授權狀態以及資源的權限狀態,並根據需要重定向用戶以進行登錄。我的問題是測試這個最好的地方是什麼? Global.asax,http處理程序,http模塊或?如何攔截所有獲取請求並根據請求的url重定向

p.s.這是一個繁忙的網站,我也需要考慮性能。安全資源存在於包含公共文檔的相同目錄中,但只有數據庫具有關於公共/私有的訪問信息。

謝謝

回答

1

當你要檢查所有的請求,並不限於特定的文件擴展名,我建議建立一個HTTP模塊。這也支持通過MSDN:用於HTTP模塊

典型用途包括:

  • 安全因爲你可以檢查傳入的請求,一個HTTP模塊 可以前執行自定義驗證或其他安全檢查 請求的頁面,XML Web服務或處理程序被調用。

它在性能方面也是一個不錯的選擇,因爲模塊在請求的早期運行。如果用戶未被授權,他或她會被提前重定向。爲了提高性能,您還可以考慮實施某種緩存,以便您不必在每個請求上查詢數據庫。

有關如何創建模塊的演練,請參見link

在Global.asax中實現檢查也是一種選擇,但這會將您的解決方案與此應用程序綁定。您可以輕鬆地與另一個項目共享該模塊。從設計的角度來看,使用模塊也很好,因爲您爲此任務創建了特定的模塊,並且不會混合使用Global.asax的BeginRequest方法中的功能。