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