WEB API在AuthorizationFilterAttribute時透過HttpRequestMessage.Properties將值傳至Controller

透過AuthorizationFilterAttribute中覆寫OnAuthorization的方法,

將驗證過後的值放入HttpRequestMessage.Properties 傳至Controller內操作使用.

其實日前剛好有一個需求,就是透過AuthorizationFilterAttribute在做驗證時,

假設驗證過了,當下驗證的某些值是否能繼續傳至Controller中繼續使用,

在此小弟是將驗證過後的值放入System.Net.Http 中的 HttpRequestMessage.Properties  IDictionary 屬性!

如果前輩有更好的做法,也不吝指導小弟!

接下來就是實作嚕!

先新增一個類別CustomerHandler.cs去繼承AuthorizationFilterAttribute並覆寫OnAuthorization方法,

接下來在ValuesController中將「CustomerHandler」標籤掛上

接下來就測試看看嚕

在下圖中我們可以看到,已經將UserInfo這物件放入HttpRequestMessage.Properties中

那麼接下來試試看,是否能在Controller中如何將值完整取出並使用!

經過測試確實是能夠將值放入HttpRequestMessage.Properties再由Controller內取得!

 

完整檔案:請點我

 

參考連結:

善用 HttpContext.Items 儲存短暫出現的資料

Retrieving the client’s IP address in ASP.NET Web API