ASP.NET Core Webアプリのログインの試行失敗についての設定

該当のクラスデフォルトの説明あり

各説明とデフォルト値ですね

builder.Services.Configure<IdentityOptions>(options =>
{
    // ロックアウトの設定
    options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5); // ロックアウトの期間
    options.Lockout.MaxFailedAccessAttempts = 5; // ロックアウトになる前の最大失敗試行回数
    options.Lockout.AllowedForNewUsers = true; // 新しいユーザーに対してロックアウトを許可するかどうか
});

AllowedForNewUsersは、アカウント作ったあとの初回ログインでロックアウトを許容するかどうかという設定とのこと
作ったばかりなので間違える可能性を考慮してということだろうか。。


ただ、上記設定を利用するかどうかは、Loginする際のメソッドに渡す引数できまる
具体的には、以下のようにコントローラーのLoginのメソッドのところで、 PasswordSignInAsyncメソッドに渡すlockoutFailureがtrueだと
MaxFailedAccessAttemptsの回数に応じてロックアウトされる

using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using SampleWeb.Models;

namespace SampleWeb.Controllers
{
    public class AccountController : Controller
    {
        private readonly SignInManager<IdentityUser> _signInManager;

        public AccountController(SignInManager<IdentityUser> signInManager)
        {
            _signInManager = signInManager;
        }

        public IActionResult Login()
        {
            return View();
        }

        [HttpPost]
        public async Task<IActionResult> Login(LoginModel model)
        {
            if (ModelState.IsValid)
            {
                var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: true);
                if (result.Succeeded)
                {
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                }
            }
            return View(model);
        }
    }
}
投稿日時: 2024-08-31 19:01:31
更新日時: 2024-09-01 10:33:01

内部リンク

最近の投稿

タグ

アーカイブ

その他