ホームページ > バックエンド開発 > C#.Net チュートリアル > C# Asp.Net WebAPI での authorization 属性の用途は何ですか?

C# Asp.Net WebAPI での authorization 属性の用途は何ですか?

王林
リリース: 2023-08-25 23:37:08
転載
1385 人が閲覧しました

認可は、認証されたユーザーに操作の実行を許可するかどうかを決定するプロセスです 特定のリソース(Web APIリソース)に対して操作を実行するかどうか。例えば、 データを取得および公開する権限を持つことは、承認の一部です。これ 承認プロセスは、コントローラーのアクション メソッドを実行する前に発生します。 リソースへのアクセスを許可するかどうかを柔軟に決定できるようにします。 か否か。

ASP.NET Web API では、承認フィルターを使用して承認が実現されます。 コントローラーのアクションメソッドが実行される前に実行されます。ウェブAPI 組み込みの承認フィルター AuthorizeAttribute を提供します。このフィルターはチェックします ユーザーが認証されているかどうか。そうでない場合は、HTTP ステータス コード 401 が返されます。 (無許可)、アクションは必要ありません。

フィルターをグローバル、コントローラー レベル、または個別レベルに適用できます。 操作する。

グローバル

各 Web API コントローラーへのアクセスを制限するには、AuthorizeAttribute フィルターを グローバルフィルターリスト。

public static void Register(HttpConfiguration config){
   config.Filters.Add(new AuthorizeAttribute());
}
ログイン後にコピー

Controller

特定のコントローラーへのアクセスを制限するには、フィルターを属性として追加します。 コントローラ。

//コントローラー上のすべての操作には承認が必要です。 [認可]

public class StudentsController: ApiController{
   public HttpResponseMessage Get(int id) { ... }
   public HttpResponseMessage Post() { ... }
}
ログイン後にコピー

Operation

特定の操作へのアクセスを制限するには、この属性をアクション メソッドに追加します。

public class StudentsController : ApiController{
   public HttpResponseMessage Get() { ... }
   // Require authorization for a specific action.
   [Authorize]
   public HttpResponseMessage Post() { ... }
}
ログイン後にコピー

Example

using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class DemoController : ApiController{
      [Authorize]
      public IHttpActionResult Get(){
         return Ok();
      }
   }
}
ログイン後にコピー

アクション メソッドに認可属性を追加したため、アクション メソッドには適切な認可 (ベアラー トークン、API キー、OAuth など) を使用してアクセスする必要があります。不正アクセスの場合、以下に示すように 401 Unauthorized 応答が返されます。

C# Asp.Net webAPI 中的授权属性有什么用?

以上がC# Asp.Net WebAPI での authorization 属性の用途は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート