- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 asp.net Core 3 身份项目时遇到问题。我创建了自定义 UserStore
和 RoleStore
以使用 Dapper
而不是 Entity Framework
。大多数似乎都在工作,除了登录尝试失败时,数据库中的 AccessFailedCount
没有增加。我已经逐步检查了代码,并找到了逻辑失败的地方。它位于名为 CheckPasswordSignInAsync
的 SignInManager
方法中,在此 block 中:
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);
}
}
UserManager.SupportsUserLockout
的值为 false
,因此它永远不会触发 AccessFailedAsync
方法。但我不确定这个值从何而来。 UserManager
中 UserManager.SupportsUserLockout
的代码块是:
public virtual bool SupportsUserLockout
{
get
{
this.ThrowIfDisposed();
return this.Store is IUserLockoutStore<TUser>;
}
}
但我无法弄清楚这里将其设置为 false 的原因是什么?这个值从何而来?
最佳答案
我想我遇到了你的问题,你还没有实现 IUserLockoutStore<TUser>
界面。由于您没有使用 Entity Framework ,因此您需要自己实现所有必要的存储。以下是您需要实现的功能。
Task<int> GetAccessFailedCountAsync(TUser user, CancellationToken cancellationToken);
Task<bool> GetLockoutEnabledAsync(TUser user, CancellationToken cancellationToken);
Task<DateTimeOffset?> GetLockoutEndDateAsync(TUser user, CancellationToken cancellationToken);
Task<int> IncrementAccessFailedCountAsync(TUser user, CancellationToken cancellationToken);
Task ResetAccessFailedCountAsync(TUser user, CancellationToken cancellationToken);
Task SetLockoutEnabledAsync(TUser user, bool enabled, CancellationToken cancellationToken);
Task SetLockoutEndDateAsync(TUser user, DateTimeOffset? lockoutEnd, CancellationToken cancellationToken);
一旦你实现了IUserLockoutStore<TUser>
界面你必须为单个用户启用锁定功能,为了实现你只需要设置 User.LockoutEnabled = 1 (true)
在AspNetUsers
表。
希望这能解决您的问题!
关于asp.net-core - .net Core 3 身份 'AccessFailedCount' 不递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60235203/
昨晚我正在处理一个使用 FormsAuthentication 的新项目,并且正在自定义票证以包含安全 token ,因此如果用户在一个浏览器中注销,它会在所有浏览器中注销。查看 ASP.net Id
我正在将 Webapi 与 Identity2.0 AccessFailedCount 一起使用,LockoutEndDateUtc 不会对无效的用户名和密码进行更改。我已经实现了 WebAPI 提供
我在使用 asp.net Core 3 身份项目时遇到问题。我创建了自定义 UserStore 和 RoleStore 以使用 Dapper 而不是 Entity Framework。大多数似乎都在工
我尝试使用此代码增加 AccessFailedCount,但它不起作用(在 AspNetUsers 表中不增加 AccessFailed Count)。 => 在这段代码中,我的第一 react 是,
我是一名优秀的程序员,十分优秀!