Asp.net-core-create-a-user
提供:Dev Guides
ASP.NET Core-ユーザーの作成
この章では、ユーザーの作成方法について説明します。 これを続行するには、Identityフレームワークと対話して、ユーザーが有効であることを確認し、そのユーザーを作成してから、ログインしてログインする必要があります。
- Identityフレームワークには2つのコアサービスがあります。1つは UserManager で、もう1つは SignInManager です。
- これらのサービスの両方をコントローラーに注入する必要があります。 これにより、ユーザーの作成またはユーザーのサインインが必要なときに適切なAPIを呼び出すことができます。
- SignInManagerとUserManagerのプライベート変数を追加してから、AccountControllerにコンストラクターを追加します。コンストラクターは、User型のUserManagerとUser型のSignInManagerの2つのパラメーターを受け取ります。
- AccountControllerのPOSTアクションメソッドを続行します。Postアクション内で常に行う必要がある最初のチェックの1つは、ModelStateが有効かどうかをチェックすることです。
- ModelStateが有効な場合、ユーザーがユーザー名とパスワードを提供し、パスワードを確認したことがわかります。そうでない場合は、正しい情報を提供するよう依頼する必要があります。
- 以下に、登録アクションの実装を示します。
- ModelState が有効な場合、Identityフレームワークと通信する必要があります。 また、Userエンティティの新しいインスタンスを作成し、入力 model.Username をUserエンティティの UserName プロパティにコピーする必要があります。
- ただし、ユーザーエンティティにプレーンテキストのパスワードを保存する場所がないため、パスワードをコピーしません。 代わりに、パスワードをIdentityフレームワークに直接渡し、パスワードをハッシュします。
- したがって、userManagerがあります。 ユーザー名を渡す必要がある* Asyncメソッド*を作成して、そのユーザーのパスワードを保存できるようにします。
- このAsyncメソッドは、インスタンスが成功したか失敗したかを示す結果を返し、失敗した場合、失敗した理由のいくつかを示します。
- 結果が成功した場合は、アカウントを作成したばかりのユーザーにサインインしてから、SignInManagerにこのユーザーに署名するように依頼できます。 ここで、ユーザーをホームページにリダイレクトすると、認証されます。
- 結果が成功しなかった場合、ユーザーにその理由を伝えようとする必要があり、UserManagerから返される結果にはエラーのコレクションがあり、それらを繰り返してそれらのエラーをModelStateに追加できます。 これらのエラーは、検証タグヘルパーなどのタグヘルパーのビューで利用でき、ページに情報を表示します。
- ModelState.AddModelErrorでは、エラーを特定のフィールドに関連付けるキーを提供できます。 また、空の文字列を使用して、提供されたエラーの説明を追加します。
すべてのファイルを保存してアプリケーションを実行し、 /account/register に移動します。
ユーザー名と非常に簡単な5文字のパスワードを入力してみましょう。
次に、[登録]ボタンをクリックします。
デフォルトでは、Identityフレームワークはパスワードに関するいくつかのルールを強制しようとします。
パスワードには少なくとも6文字、1文字は小文字、1文字は大文字、1文字の非数字文字が必要です。
これらのエラーがここに表示される理由は、 userManager.CreateAsync の結果から返されるエラーを取得しているページに検証の要約があるためです。
パスワードルールについてもう少し理解したので、十分に複雑なパスワードを作成して、[登録]をクリックしてみましょう。
これでホームページが表示されます。 これは、操作が機能したことを意味します。 次に、SQL Serverオブジェクトエクスプローラーに移動します。
これで、ユーザーが正常に作成されたことを確認できます。また、ユーザーテーブルに新しいレコードを表示できます。 また、ハッシュされたパスワード値とユーザー名を確認できます。これは、 mark.upston で登録したユーザー名です。