Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การใช้ Authorize Attribute ใน C # Asp.Net webAPI คืออะไร


การอนุญาตเป็นกระบวนการตัดสินใจว่าผู้ใช้ที่ได้รับการรับรองความถูกต้องจะได้รับอนุญาตให้ดำเนินการกับทรัพยากรเฉพาะ (ทรัพยากร API ของเว็บ) หรือไม่ ตัวอย่างเช่น การได้รับอนุญาตให้รับข้อมูลและโพสต์ข้อมูลเป็นส่วนหนึ่งของการอนุญาต กระบวนการตรวจสอบสิทธิ์จะเกิดขึ้นก่อนดำเนินการตามวิธีการควบคุม ซึ่งให้ความยืดหยุ่นแก่คุณในการตัดสินใจว่าเราต้องการให้สิทธิ์การเข้าถึงแก่ทรัพยากรนั้นหรือไม่

ในการอนุญาต ASP.NET Web API นั้นดำเนินการโดยใช้ตัวกรองการอนุญาตซึ่งจะถูกดำเนินการก่อนที่จะดำเนินการวิธีการดำเนินการของตัวควบคุม Web APIจัดเตรียมตัวกรองการอนุญาตในตัว AuthorizeAttribute ตัวกรองนี้จะตรวจสอบว่าผู้ใช้ได้รับการพิสูจน์ตัวตนหรือไม่ หากไม่เป็นเช่นนั้น ระบบจะส่งคืนรหัสสถานะ HTTP 401 (ไม่ได้รับอนุญาต) โดยไม่ต้องเรียกใช้การดำเนินการ

เราใช้ตัวกรองได้ทั่วโลก ที่ระดับตัวควบคุม หรือที่ระดับของการดำเนินการส่วนบุคคล

ทั่วโลก

ในการจำกัดการเข้าถึงสำหรับตัวควบคุม Web API ทุกตัว ให้เพิ่มตัวกรอง AuthorizeAttribute ในรายการตัวกรองร่วม

public static void Register(HttpConfiguration config){
   config.Filters.Add(new AuthorizeAttribute());
}

คอนโทรลเลอร์

ในการจำกัดการเข้าถึงสำหรับคอนโทรลเลอร์เฉพาะ ให้เพิ่มตัวกรองเป็นแอตทริบิวต์ให้กับคอนโทรลเลอร์

// ต้องการการอนุญาตสำหรับการดำเนินการทั้งหมดบนตัวควบคุม[อนุญาต]

public class StudentsController: ApiController{
   public HttpResponseMessage Get(int id) { ... }
   public HttpResponseMessage Post() { ... }
}

การกระทำ

หากต้องการจำกัดการเข้าถึงสำหรับการดำเนินการเฉพาะ ให้เพิ่มแอตทริบิวต์ลงในวิธีดำเนินการ

public class StudentsController : ApiController{
   public HttpResponseMessage Get() { ... }
   // Require authorization for a specific action.
   [Authorize]
   public HttpResponseMessage Post() { ... }
}

ตัวอย่าง

using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class DemoController : ApiController{
      [Authorize]
      public IHttpActionResult Get(){
         return Ok();
      }
   }
}

เนื่องจากเราได้เพิ่มแอตทริบิวต์การอนุญาตเหนือวิธีดำเนินการ จึงควรใช้การให้สิทธิ์ที่เหมาะสม เช่น โทเค็นผู้ถือ คีย์ API OAuth เป็นต้น เพื่อเข้าถึงวิธีดำเนินการ การเข้าถึงโดยไม่ได้รับอนุญาตจะส่งผลให้ 401 Unauthorized ตอบกลับที่แสดงด้านล่าง

การใช้ Authorize Attribute ใน C # Asp.Net webAPI คืออะไร