การอนุญาตเป็นกระบวนการตัดสินใจว่าผู้ใช้ที่ได้รับการรับรองความถูกต้องจะได้รับอนุญาตให้ดำเนินการกับทรัพยากรเฉพาะ (ทรัพยากร 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 ตอบกลับที่แสดงด้านล่าง