Asp.net-core-authorize-attribute
ASP.NET Core-属性の承認
この章では、認証属性について説明します。 これまでのアプリケーションでは、匿名ユーザーが何でもできるようにしました。 従業員の詳細を編集し、詳細を表示できますが、新しい従業員を作成する機能はありません。 最初に作成機能を追加してから、Authorize属性を使用してユーザーアクセスを制限します。
次のプログラムに示すように、POSTとGETの両方のHomeControllerに* actionメソッド*を追加します。
次のプログラムに示すように、Index.cshtmlファイルに Create View へのリンクを追加しましょう。
アプリケーションを実行します。次のページが表示されます。
ホームページに、作成リンクが表示されます。 [作成]リンクをクリックすると、作成ビューに移動します。
[名前]フィールドに名前を入力し、[保存]ボタンをクリックします。
新しく追加された従業員の*詳細ビュー*が表示されます。 [ホーム]リンクをクリックします。
このアプリケーションでは、すべてのユーザーが従業員を作成、編集でき、全員が詳細ビューを表示できます。 将来、匿名ユーザーがホームページで従業員のリストのみを見ることができるように、この動作を変更したいのですが、他のすべてのアクションでは、ユーザーが自分自身を識別してサインインする必要があります。 これを行うには、* Authorize属性*を使用します。
承認属性は、コントローラーまたはコントローラー内の個々のアクションに配置できます。
- Authorize属性をコントローラー自体に配置すると、authorize属性は内部のすべてのアクションに適用されます。
- MVCフレームワークでは、ユーザーが認証チェックに合格しない限り、リクエストがこの属性で保護されたアクションに到達することはできません。
- デフォルトでは、他のパラメーターを使用しない場合、Authorize属性が行う唯一のチェックは、ユーザーがログインしていることを確認するためのチェックです。
- ただし、パラメーターを使用して、好みの凝ったカスタム許可ポリシーを指定できます。
- AllowAnonymous 属性もあります。 この属性は、コントローラーのAuthorize属性を使用して内部のすべてのアクションを保護する場合に役立ちますが、この単一のアクションまたは保護を解除して匿名ユーザーが特定のアクションに到達できるようにする1つまたは2つのアクションがあります。
アプリケーションでこれらの属性を試してみましょう。 実行中のアプリケーションでは、匿名ユーザーが従業員を編集できます。
これを変更し、従業員を編集する前にユーザーにログインして本人確認を強制する必要があります。 HomeControllerに進みましょう。 ここでは、1つまたは2つのアクションへのアクセスを制限します。 保護する特定のアクションにAuthorize属性をいつでも配置できます。 また、コントローラー自体にAuthorize属性を配置することもできます。このAuthorize属性はMicrosoft.AspNet.Authorization名前空間にあります。
ここで、Authorize属性を使用し、次のプログラムに示すように、ホームページを除き、ユーザーがこのコントローラーにアクセスするために自分自身を強制的に識別します。
従業員のリストを表示するホームページまたは Index.cshtml ファイルには* AllowAnonymous属性*があります。 アプリケーションを実行しましょう。
- 開発者ツール*を開くF12キーを押します。 次に、[ネットワーク]タブに移動します。
開発者ツールで見たいことがいくつかあるので、どのように機能するかを確認できます。 [編集]リンクをクリックすると、空白のページが表示されます。
開発者ツールを見ると、サーバーから返されたHTTPステータスコードが* 401ステータスコード*であることがわかります。
401ステータスコードは、有効な認証資格情報が不足しているためにリクエストが許可されなかったことをブラウザに通知します。 これにより、Authorize属性が機能していることがわかります。
同様に、ホームページの[作成]リンクをクリックすると、次のスクリーンショットに示すものと同じエラーが表示されます。
- ここで、悪い点は、ユーザーが空白のページに残されることであり、開発者ツールを開いていない限り、これが認証の問題であることを知らない可能性があります。
- これは、Identityフレームワークが介入して支援できる場所です。
- ユーザーがアクセスできないため、Identityフレームワークはアプリケーションの一部が401ステータスコードを返すことを検出できます。また、Identityフレームワークはそれをログインページに変換し、ユーザーがこの問題を回避できるようにします。
- Identityフレームワークをインストールして構成すると、どのように機能するかがわかります。
- しかし、現時点では、* Authorize属性*が機能していることがわかります。