C# Asp.Net Web API 中 Authorize 属性有什么作用?


授权是确定已认证的用户是否允许对特定资源(Web API 资源)执行操作的过程。例如,拥有获取数据和发布数据的权限是授权的一部分。授权过程发生在执行控制器操作方法之前,这使您能够灵活地决定是否要授予对该资源的访问权限。

在 ASP.NET Web API 中,授权是通过使用授权过滤器实现的,这些过滤器将在执行控制器操作方法之前执行。Web API 提供了一个内置的授权过滤器 AuthorizeAttribute。此过滤器检查用户是否已通过身份验证。如果没有,它将返回 HTTP 状态代码 401(未授权),而不会调用操作。

我们可以在全局、控制器级别或单个操作级别应用过滤器。

全局

要限制对每个 Web API 控制器的访问,请将 AuthorizeAttribute 过滤器添加到全局过滤器列表中。

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

控制器

要限制对特定控制器的访问,请将过滤器作为属性添加到控制器。

// 要求对控制器上的所有操作进行授权 [Authorize]

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();
      }
   }
}

由于我们在操作方法上添加了 authorize 属性,因此应使用适当的授权(如 bearer 令牌、API 密钥、OAuth 等)来访问操作方法。未经授权的访问将导致 **401 未授权** 响应,如下所示。

更新于: 2020-09-24

7K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.