1、Taurus.MVC WebAPI 入門開發教學1:框架下載環境設定與執行。
2、Taurus.MVC WebAPI 入門開發教學2:新增控制器輸出Hello World。
3、Taurus.MVC WebAPI 入門開發教學3:路由型別和路由對映。
4、Taurus.MVC WebAPI 入門開發教學4:控制器方法及引數定義、獲取及基礎校驗屬性【Require】。
5、Taurus.MVC WebAPI 入門開發教學5:控制器安全校驗屬性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。
6、Taurus.MVC WebAPI 入門開發教學6:全域性控制器DefaultController與全域性事件。
7、Taurus.MVC WebAPI 入門開發教學7:業務邏輯基礎類別LogicBase的使用。
8、Taurus.MVC WebAPI 入門開發教學8:WebAPI檔案與自動化測試。
後續還有兩個系列:
1、Taurus.MVC 微服務 入門開發教學系列。 2、Taurus.MVC Web應用 入門開發教學系列。
本系列還有幾篇,抓緊時間寫完,本篇介紹控制器各安全校驗屬性的使用。
作用:
可限制該方法允許的請求型別,允許標識多個。
如果方法沒有標記,即預設允許所有請求型別。
對於控制器的方法,只需要標識上對應的屬性標籤,範例使用:
public class MSController : Controller { /// <summary> /// Get or Post 測試 /// </summary> /// <param name="msg">post 訊息</param> /// <param name="file" type="file">file</param> [HttpGet] [HttpPost] public void Hello(string msg, System.Web.HttpPostedFile file) { //MicroService.Const.HeaderKey if (file != null) { file.SaveAs(file.FileName); } if (Request.UrlReferrer != null) { Write("From : " + Request.UrlReferrer.ToString() + "\r\n"); } Write("MicroService : " + MicroService.Config.AppRunUrl + Request.Url.LocalPath + " : " + Request.HttpMethod + " : " + msg ?? "Hello" + MicroService.Config.ServerName); } }
說明:
僅允許Get或Post兩種請求方式。
作用:
1、實現自定義:控制請求頻率。 2、實現自定義:黑名單過濾。 3、實現自定義:過濾無效的攻擊請求。
該標識通常要求發起請求者在請求頭傳遞ack=xxx值,以便API獲取該值並進行分析判斷。
範例使用:
public class MSController : Controller { public override bool CheckAck() { string ack = Query<string>("ack"); //1、IP黑名單判斷。 //2、重複請求判斷:檢測該標識是否請求過了。 //3、IP請求頻繁檢測:判斷是否攻擊請求。 return 判斷後的結果,false禁止繼續執行,true則繼續; } /// <summary> /// Get or Post 測試 /// </summary> /// <param name="msg">post 訊息</param> /// <param name="file" type="file">file</param> [HttpGet] [HttpPost] [Ack] public void Hello(string msg, System.Web.HttpPostedFile file) { //MicroService.Const.HeaderKey if (file != null) { file.SaveAs(file.FileName); } if (Request.UrlReferrer != null) { Write("From : " + Request.UrlReferrer.ToString() + "\r\n"); } Write("MicroService : " + MicroService.Config.AppRunUrl + Request.Url.LocalPath + " : " + Request.HttpMethod + " : " + msg ?? "Hello" + MicroService.Config.ServerName); } }
該標識可以標識在方法,或者類屬性上,對於標識上Ack的方法,會觸發CheckAck方法。
作用區域:
1、區域性控制器內生效:過載CheckAck方法即可。 2、全域性生效:在全域性控制器DefaultController中的全域性事件CheckAck方法實現。
對於安全的處理程式碼,框架沒有提供,有需要可自己實現。
作用:
作為賬號登陸後,傳遞賬號資訊用於校驗與獲取資訊使用。
該標識通常要求發起請求者在請求頭傳遞token=xxx值,以便API獲取該值並進行分析判斷。
範例:
public class MSController : Controller { public override bool CheckToken() { string token = Query<string>("token"); //進行安全驗證 return base.CheckToken(); } /// <summary> /// Get or Post 測試 /// </summary> /// <param name="msg">post 訊息</param> /// <param name="file" type="file">file</param> [HttpGet] [HttpPost] [Token] public void Hello(string msg, System.Web.HttpPostedFile file) { //MicroService.Const.HeaderKey if (file != null) { file.SaveAs(file.FileName); } if (Request.UrlReferrer != null) { Write("From : " + Request.UrlReferrer.ToString() + "\r\n"); } Write("MicroService : " + MicroService.Config.AppRunUrl + Request.Url.LocalPath + " : " + Request.HttpMethod + " : " + msg ?? "Hello" + MicroService.Config.ServerName); } }
用法和Ack一樣,僅是作用不同。
作用區域:
1、區域性控制器內生效:過載CheckToken方法即可。 2、全域性生效:在全域性控制器DefaultController中的全域性事件CheckToken方法實現。
框架內部有提供實現,但是不建議使用,如有需要可以參考原始碼使用。
參考原始碼在:https://github.com/cyq1162/Taurus.MVC/blob/master/Taurus.Core/Extend/AuthController.cs
作用:
用於校驗微服務間的呼叫許可權驗證,避免直接請求。
使用方式和【Ack】【Token】一樣,也有對應的方法:
public class MSController : Controller { public override bool CheckMicroService() { string key = Query<string>(MicroService.Const.HeaderKey); //進行安全驗證 return ... } /// <summary> /// Get or Post 測試 /// </summary> /// <param name="msg">post 訊息</param> /// <param name="file" type="file">file</param> [HttpGet] [HttpPost] [MicroService] public void Hello(string msg, System.Web.HttpPostedFile file) { //MicroService.Const.HeaderKey if (file != null) { file.SaveAs(file.FileName); } if (Request.UrlReferrer != null) { Write("From : " + Request.UrlReferrer.ToString() + "\r\n"); } Write("MicroService : " + MicroService.Config.AppRunUrl + Request.Url.LocalPath + " : " + Request.HttpMethod + " : " + msg ?? "Hello" + MicroService.Config.ServerName); } }
作用區域:
1、區域性控制器內生效:過載CheckMicroService方法即可。 2、全域性生效:在全域性控制器DefaultController中的全域性事件CheckMicroService方法實現。
該屬性的使用,在Taurus.MVC 微服務架構系列的安全篇中,會另外提到。
本篇介紹各屬性在控制器中的基本使用,各屬性都可以在各控制器類或方法中使用。
對於需要全域性統一管控處理的,在全域性控制中處理,可以見下一篇都得,全域性的DefaultController。
版權宣告:本文原創發表於 部落格園,作者為 路過秋天 本文歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則視為侵權。 |
個人微信公眾號 |
創業QQ群:617713515 |
Donation(掃碼支援作者):支付寶: |
Donation(掃碼支援作者):微信: |