透過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