2016-09-27 66 views
0

我的場景是我們已經開發的網站(它依賴於用戶IP地址Request.UserHostAddress)現在部署在CloudFlare代理之後。因此,現在我們需要檢查是否有CloudFlare的原始IP標頭。是否可以在Action Filter或Module中更改請求IP /請求上下文?

我打算編寫一個可以在Action發生之前運行的過濾器/模塊,因此我們不必修改代碼。如果存在的話,我需要過濾器/模塊將頭部的值替換爲UserHostAddress

但是,我不知道Action Filter是否可以實際修改Requeset UserHostAddress,也不會發現任何可以覆蓋RequestContext對象創建的內容。

是否可以通過動作過濾器和/或IIS模塊來實現?如果有,我應該尋找什麼關鍵字?

回答

0

HttpRequest類中的UserHostAddress屬性是隻讀的,因此它不能更改,但可以在HttpRequest類中添加擴展方法,並使其默認從UserHostAddress中讀取,並且如果特定的標題或路由數據存在,例如:OriginalUserHostAddress,然後返回它的值。

在動作過濾器中,您可以檢查防火牆頭並存在,然後設置路由數據變量或臨時數據變量並從擴展方法中讀取它。