実行結果確認
それでは、アカウントロックアウトがどのように動作するか、実際に動かしてみましょう。実行後、まずは登録画面から新しいユーザーを登録します(図2)。
登録後のユーザー情報を確認すると、AspNetUsersテーブルのLockoutEnabled列にTrueが設定されていることを確認できます(図3)。
では、一度ログアウトしてから、今度は登録したユーザー名で異なるパスワードを入れてログインに失敗してみましょう(図4)。
ログオンに失敗すると、AspNetUsersテーブルのAccessFailedCount列の値がカウントアップされます(図5)。
このままさらに5回ログインに失敗すると、アカウントがロックアウトされます(図6)。
ロックアウトされると、AspNetUsersテーブルのLockoutEndDateUtc列にロックアウトされた時刻からIdentityConfig.csファイルで指定したロックアウト時間(5分)が足された、ロックアウト終了日時が設定されます。また、AccessFailedCount列は0にクリアされます(図7)。
ロックアウト終了日時が来るまでは、有効なパスワードを入力してもログインできません。ロックアウト終了日時の後に有効なパスワードを入力してログインすると、ログインに成功します(図8)。
まとめ
今回はVS2013 Update 2の新テンプレートを元に、ASP.NET Identity 2.0の新機能のうち、ユーザー情報の変更点、パスワード検証の強化、アカウントロックアウトの3つを紹介しました。まとめると次のようになります。
-
ユーザー情報には新機能に使用する多くのプロパティが追加された
- ログインユーザーには既定でメールアドレスが使われるようになった
-
パスワードの検証が強化された
- パスワードに使える文字種などを指定できるようになった
-
アカウントロックアウト機能が追加された
-
テンプレートでは対応していないので、自分で作りこむ必要がある
み込む
- UserManager<TUser>クラスのロックアウト関連プロパティを設定し、機能を有効にする
- UserManager<TUser>クラスのロックアウト関連メソッドを使用し、ロックアウト処理を組み込む
-
テンプレートでは対応していないので、自分で作りこむ必要がある
次回は引き続きASP.NET Identity 2.0の新機能について、メール連携の機能に絞って紹介していく予定です。お楽しみに。
