c# - 通过使用 asp net identity 2.1 发送重置帐户链接来重置用户锁定

标签 c# asp.net-mvc-5 asp.net-identity

我有一个 ASP MVC 项目,我想在用户锁定后将解锁帐户锁定链接发送到用户的电子邮件。我在我的项目中使用 asp net identity 2.1。我可能做的是使用 asp 身份将帐户锁定 30 分钟。这段时间之后,帐户将被解锁。我试图向用户发送包含重置链接的电子邮件。该链接调用具有以下代码的方法。

[AllowAnonymous]
public async Task<ActionResult> UnlockAccount(string userId)
{
    await UserManager.ResetAccessFailedCountAsync(userId);
    return RedirectToAction("Login");
}

但在此之后,我的帐户仍然被锁定了 30 分钟,这是我在 IdentityConfig.cs 中设置的。这在 asp net identity 中可能吗?

最佳答案

我知道这是旧的,但它值得一个答案,因为我自己也一直在想同样的问题......

AccessFailedCount 无关紧要 - 唯一将用户锁定的是 LockoutEndDateUtc。如果当前 UTC 日期时间早于 LockoutEndDateUtc,那么您将无法进入。

虽然重置很简单:

await UserManager.SetLockoutEndDateAsync(userId, new DateTimeOffset(DateTime.UtcNow));

您可以将 DateTimeOffset 设置为您想要的任何值,只要它早于当前 DateTimeUTC,在我的示例中,我使用 DateTime.UtcNow,因为它提供了额外的好处知道帐户何时解锁。

当用户最终再次登录时,AccessFailedCount 将重置为 0,因此您无需担心重置。

关于c# - 通过使用 asp net identity 2.1 发送重置帐户链接来重置用户锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33295992/

相关文章:

c# - WCF - 客户端端点配置错误

c# - 保持 .NET 依赖注入(inject)有序

c# - 将默认值设置为选择列表

c# - 同一数据库中的两个 IdentityDbContext

asp.net-identity - ASP>NET 标识 : How to compare a password entered by the user with a hashed password?

c# - 如何在编辑(图像按钮)单击时在 GridView 的 EditItemTemplate 中绑定(bind) ASP.Net DropDownList 控件

c# - LINQ to Entities 无法识别方法 IsNullOrWhiteSpace

javascript - 在 ASP.net MVC 5 应用程序中单击按钮时使用 JavaScript/jQuery 将用户重定向到页面

asp.net-mvc - 如何将 View 移动到不同的项目?

asp.net-mvc - Google OpenID 2.0 逐步淘汰 - Owin 集成