在Startup.cs中尝试3次登录后,通过自动锁定用户身份来初始化身份
var lockoutOptions = new LockoutOptions()
{
AllowedForNewUsers = true,
DefaultLockoutTimeSpan = TimeSpan.FromDays(365),
MaxFailedAccessAttempts = 3
};
services.AddIdentity<ApplicationUser, IdentityRole>(x =>
{
x.Lockout = lockoutOptions;
})
登录AccountController.cs
var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: true);
最终
LockoutEnd = +一年(都可以)
LockoutEnabled == 0(否) 用户未锁定并可以登录
为什么'LockoutEnabled'不是1(true)
可能是什么原因?
答案 0 :(得分:2)
LockoutEnabled
属性指示可以锁定用户。这并不意味着该用户当前被禁止。
获取或设置一个标志,指示是否可以将用户锁定。
这样,您可以设置具有LockoutEnabled = true的“普通”用户和具有LockoutEnabled = false的一些“特殊管理员用户”。 (如果“邪恶的人”仅通过尝试登录几次就锁定了您的管理员,那将是很糟糕的-例如,在这种情况下,这样做很有意义。)
如果使用以下配置将新用户的LockoutEnabled默认设置为true
LockoutOptions.AllowedForNewUsers
获取或设置一个标志,该标志指示是否可以锁定新用户。 默认为true。
在您的代码示例中将其设置为true,所以我猜您是在创建测试用户后更改了它,或者在某处/进行了数据库更新以进行测试,因此对于所有现有数据库,您都必须手动将其设置为true用户。 (应正确添加新用户。)