可以通过以下示例代码解决此问题:
在 Startup.cs 文件中的 ConfigureServices 方法中添加以下代码:
services.Configure
在 appsettings.json 文件中添加以下代码:
{ "Identity": { "Password": { "RequireDigit": true, "RequiredLength": 8, "RequireLowercase": true, "RequireNonAlphanumeric": true, "RequireUppercase": true }, "Lockout": { // 登录失败锁定帐户的时间 "DefaultLockoutTimeSpan": "0:10:0", // 最大登录失败尝试次数 "MaxFailedAccessAttempts": 5 } } }
在 AccountController.cs 文件中添加以下代码:
public async Task
// 验证登录信息是否正确
var result = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, lockoutOnFailure: true);
// 累加登录记录
if (result.Succeeded)
{
// 登录成功,重置登录失败的尝试次数
await _userManager.ResetAccessFailedCountAsync(user);
return RedirectToAction(nameof(HomeController.Index), "Home");
}
// 登录失败,记录登录失败的尝试次数
await _userManager.AccessFailedAsync(user);
ModelState.AddModelError(string.Empty, "无效的用户名或密码。您还剩 " + (4 - await _userManager.GetAccessFailedCountAsync(user)) + " 次尝试机会。");
return View(model);
}
通过以上代码,我们可以限制每个用户登录的最大尝试次数,并设置一个重试间隔时间,在一段时间内失败的登录尝试会自