ASP.NET Coreでの承認は、[Authorize] 属性とそのさまざまなパラメーターを使用して制御されます。 最も基本的な形式では、[Authorize] 属性を Razor コンポーネント、コントローラー、アクション、または Razor Page に適用すると、そのコンポーネントへのaccessが認証されたユーザーに制限されます。
この記事では、 コンポーネントの例を使用し、 承認シナリオに焦点を当てます。 Pages と MVC のガイダンスについては、この記事を読んだ後の次のリソースを参照してください。
属性
アプリで、 コンポーネント ファイル () の先頭にある属性を指定します。 次の例では、認証されたユーザーのみがページをaccessできます。
@page "/"
@using Microsoft.AspNetCore.Authorization
@attribute [Authorize]
You can only see this if you're signed in.
Important
ルーター経由で到達したコンポーネント属性のみを使用します。 ルーティングの側面としてのみ認可が実行され、ページ内にレンダリングされた子コンポーネントには実行されません。 ページ内の特定の部分の表示を承認するには、代わりに AuthorizeView コンポーネントを使用します。これは、ASP.NET Core Blazor 認証と承認で説明されています。
属性は、 アプリ内のすべての コンポーネント、または ファイル () を使用してフォルダー内の コンポーネントのサブセットに適用することもできます。 属性に対するディレクティブと名前空間に対するディレクティブを追加します。
@using Microsoft.AspNetCore.Authorization
@attribute [Authorize]
属性は、ロールベースまたはポリシーベースの承認もサポートしています。 ロールベースの承認の場合は、 パラメーターを使用します。 次の例では、ユーザーがページをaccessできるのは、Admin または Superuser ロールの場合のみです。
@page "/"
@attribute [Authorize(Roles = "Admin, Superuser")]
<p>You can only see this if you're in the 'Admin' or 'Superuser' role.</p>
ポリシー ベースの承認には、 パラメーターを使用します。 次の例では、ユーザーがページをaccessできるのは、Over21認証ポリシーの要件を満たしている場合のみです。
@page "/"
@attribute [Authorize(Policy = "Over21")]
<p>You can only see this if you satisfy the 'Over21' policy.</p>
も も指定されていない場合、 には既定のポリシーが使われます。
- 認証された (サインインした) ユーザーが認可されます。
- 認証されていない (サインアウトした) ユーザーは認可されません。
ユーザーが承認されておらず、アプリが コンポーネントを使用して承認されていないコンテンツをカスタマイズしない場合、フレームワークは自動的に次のフォールバック メッセージを表示します。
Not authorized.
Blazor 認証と承認の詳細については、「ASP.NET Core Blazor 認証と承認を参照してください。
[AllowAnonymous] 属性を使用して、認証されていないユーザーによる個々のアクションへのaccessを許可します。
@using Microsoft.AspNetCore.Authorization
@attribute [AllowAnonymous]
すべてのアプリ ユーザーに認証を要求する方法については、「承認によって保護されたユーザー データを使用して ASP.NET Core アプリを作成するを参照してください。
その他のリソース
ASP.NET Core