iSp*_*n17 3 c# asp.net-core asp.net-core-identity
因此,该方法SignInManager.PasswordSignInAsync有一个最后一个参数lockoutOnFailure,如果该参数为真,则会在用户输入错误凭据时锁定用户。但是已经有一个名为的属性MaxFailedAccessAttempts,它在(默认情况下)5 个成功事件之后锁定用户。
我在这里有些困惑,无法根据第 4 个参数找到此方法如何工作的答案。如果已经设置了何时锁定的选项,为什么我们需要设置 lockoutOnFailure?我不想将其设置为 true。
我如何理解它的工作原理:
如果lockoutOnFailure: true,那么即使这是用户第一次尝试登录,如果他们输入错误的凭据,他们也会被锁定。如果lockoutOnFailure: false,那么即使这是他们的第 5 次尝试,如果他们输入了错误的凭据,他们也不会被锁定。我不希望这两种情况都发生,所以我不想将它设置为任何一个值。我该怎么办?还是我理解的方法不对?
ASP.NET Core Identity 是开源的,这意味着您可以轻松查看代码。PasswordSignInAsync 最终调用CheckPasswordSignInAsync方法。
哪个
if (UserManager.SupportsUserLockout && lockoutOnFailure)
{
// If lockout is requested, increment access failed count which might lock out the user
await UserManager.AccessFailedAsync(user);
if (await UserManager.IsLockedOutAsync(user))
{
return await LockedOut(user);
}
}
Run Code Online (Sandbox Code Playgroud)
这意味着,MaxFailedAccessAttempts可能会全局设置,但除非使用lockoutOnFailure.
文档已经注意到这一点,但它的措辞有点奇怪:
获取或设置在用户被锁定之前允许的失败访问尝试次数(假设已启用锁定)。默认为 5。
该lockoutOnFailure参数是使能机制。其中的文档PasswordSignInAsync清楚。
指示如果登录失败是否应锁定用户帐户的标志。
如果该标志设置为false,则失败的尝试不会增加失败的登录计数器。
但是,一旦帐户被锁定,即使设置为false ,PasswordSignInAsync也会返回LockedOut结果lockedOnFailure。此参数仅确定计数器是否会在失败时增加(并且一旦超过将帐户标记为锁定)。
| 归档时间: |
|
| 查看次数: |
1035 次 |
| 最近记录: |