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