Computer >> Máy Tính >  >> Lập trình >> C#

Việc sử dụng Thuộc tính Ủy quyền trong C # Asp.Net webAPI là gì?

Ủy quyền là quá trình quyết định xem người dùng được xác thực có được phép thực hiện một hành động trên một tài nguyên cụ thể (Tài nguyên API Web) hay không. Ví dụ:có quyền lấy dữ liệu và đăng dữ liệu là một phần của ủy quyền. Quy trình Ủy quyền xảy ra trước khi thực hiện Phương thức hành động của bộ điều khiển, cung cấp cho bạn sự linh hoạt để quyết định xem chúng tôi có muốn cấp quyền truy cập cho tài nguyên đó hay không.

Trong ASP.NET Web API ủy quyền được thực hiện bằng cách sử dụng bộ lọc Ủy quyền mà bộ lọc này sẽ được thực thi trước khi thực thi phương thức hành động của bộ điều khiển. Web API cung cấp bộ lọc ủy quyền tích hợp, AuthorizeAttribute. Bộ lọc này kiểm tra cho dù người dùng đã được xác thực hay chưa. Nếu không, nó sẽ trả về mã trạng thái HTTP 401 (Không được phép) mà không cần thực hiện hành động.

Chúng tôi có thể áp dụng bộ lọc trên toàn cầu, ở cấp bộ điều khiển hoặc ở cấp các giao dịch riêng lẻ.

Trên toàn cầu

Để hạn chế quyền truy cập cho mọi bộ điều khiển API Web, hãy thêm bộ lọc AuthorizeAttribute vào danh sách bộ lọc chung.

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

Bộ điều khiển

Để hạn chế quyền truy cập cho một bộ điều khiển cụ thể, hãy thêm bộ lọc làm thuộc tính cho bộ điều khiển.

// Yêu cầu ủy quyền cho tất cả các hành động trên bộ điều khiển. [Ủy quyền]

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

Hành động

Để hạn chế quyền truy cập cho các hành động cụ thể, hãy thêm thuộc tính vào phương thức hành động.

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

Ví dụ

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

Vì chúng tôi đã thêm thuộc tính ủy quyền trên phương thức hành động, nên ủy quyền thích hợp như mã thông báo mang, khóa API, OAuth, v.v., sẽ được sử dụng để truy cập phương thức hành động. Truy cập trái phép sẽ dẫn đến 401 Trái phép phản hồi được hiển thị bên dưới.

Việc sử dụng Thuộc tính Ủy quyền trong C # Asp.Net webAPI là gì?