asp 未设置核心锁定 LockoutEnabled
asp core Lockout not set LockoutEnabled
在 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 (false) 用户未锁定,可以登录
为什么'LockoutEnabled'不是1(真)
可能是哪些原因?
LockoutEnabled
属性 表示用户可以被锁定。这并不意味着该用户当前已被禁止。
Gets or sets a flag indicating if the user could be locked out.
这样您可以设置 "normal" 用户 LockoutEnabled=true 和一些 "special admin users" LockoutEnabled=false。 (如果 "evil people" 通过简单地尝试登录几次来锁定您的管理员,那将是糟糕的 - 举个例子,这可能是有意义的。)
如果使用
配置新用户的 LockoutEnabled 默认为 true
LockoutOptions.AllowedForNewUsers
Gets or sets a flag indicating whether a new user can be locked out.
Defaults to true.
它在你的代码示例中设置为 true,所以我猜你在创建测试用户后更改了它或者在某处更新了数据库/用于测试,所以你必须在你的数据库中手动将它设置为 true所有现有用户。 (新用户应该正确添加。)
在 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 (false) 用户未锁定,可以登录
为什么'LockoutEnabled'不是1(真)
可能是哪些原因?
LockoutEnabled
属性 表示用户可以被锁定。这并不意味着该用户当前已被禁止。
Gets or sets a flag indicating if the user could be locked out.
这样您可以设置 "normal" 用户 LockoutEnabled=true 和一些 "special admin users" LockoutEnabled=false。 (如果 "evil people" 通过简单地尝试登录几次来锁定您的管理员,那将是糟糕的 - 举个例子,这可能是有意义的。)
如果使用
配置新用户的 LockoutEnabled 默认为 trueLockoutOptions.AllowedForNewUsers
Gets or sets a flag indicating whether a new user can be locked out. Defaults to true.
它在你的代码示例中设置为 true,所以我猜你在创建测试用户后更改了它或者在某处更新了数据库/用于测试,所以你必须在你的数据库中手动将它设置为 true所有现有用户。 (新用户应该正确添加。)