ASP.Net Core SignInManager lockoutOnFailure

Posted

技术标签:

【中文标题】ASP.Net Core SignInManager lockoutOnFailure【英文标题】: 【发布时间】:2016-10-30 11:40:40 【问题描述】:

ASP.Net Core 具有处理用户身份验证的 SignInManager。其中一种方法是PasswordSignInAsync(string username, string password, bool isPersistent, bool lockoutOnFailure)。将 lockoutOnFailure 设置为 true 应该会在登录尝试失败一定次数后暂时锁定用户。

查看数据库中的 AspNetUsers 表,我看到以下内容:

AccessFailedCount 每次访问失败都会增加 1,当它达到 5 时,它会翻转到 0。 滚动到 0 时,LockoutTimeEnd 设置为未来 5 分钟。 Lo​​ckoutEnabled 但即使在翻转后仍为 0,用户可以继续尝试登录。

看起来预期的功能是允许 5 次登录尝试,然后将帐户锁定 5 分钟。

所以我的问题是:

    如何设置允许的失败登录次数? 如何设置锁定期? 为什么不触发锁定?

【问题讨论】:

关于你的第三条,它适用于默认项目模板,所以你必须分享一些代码,寻求帮助 我发现了这一点。无论“LockoutTimeEnd”如何,任何具有“LockoutEnabled=false”的用户都不会被锁定。而“LockoutEnabled=true”的用户只有在 LockoutTimeEnd>DateTime.Now 时才会被锁定。我已将所有用户设置为“LockoutEnabled=false”,从而有效地禁用了整个锁定机制。 你是怎么设置的?在注册操作中创建用户时? 来自 SQL UPDATE AspNetUsers SET LockoutEnabled=0; 好的。因此,通常情况下,如果您不运行自定义 SQL 查询 :),使用 LockoutOptions.AllowedForNewUsers = true(这是默认值),可以锁定新创建的用户。 LockoutEnabled 将设置为 1。 【参考方案1】:
    如何设置允许的失败登录次数? 如何设置锁定期?

默认项目模板使用扩展方法配置身份服务AddIdentity<TUser, TRole>(在StartupConfigureServices 方法中)。这个方法有一个重载,可以配置IdentityOptions

代替

services.AddIdentity<ApplicationUser, IdentityRole>()
     .AddEntityFrameworkStores<ApplicationDbContext>()
     .AddDefaultTokenProviders();

你可以使用

var lockoutOptions = new LockoutOptions()

     AllowedForNewUsers = true,
     DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5),
     MaxFailedAccessAttempts = 5
;

services.AddIdentity<ApplicationUser, IdentityRole>(options =>
     
         options.Lockout = lockoutOptions;
     )
     .AddEntityFrameworkStores<ApplicationDbContext>()
     .AddDefaultTokenProviders();

以上是没有意义的,因为这些是LockoutOptions的默认值,但是您可以随意更改它们。

【讨论】:

以上是关于ASP.Net Core SignInManager lockoutOnFailure的主要内容,如果未能解决你的问题,请参考以下文章

Asp.NET Core进阶 第四篇 Asp.Net Core Blazor框架

.NET Core 1.0ASP.NET Core 1.0和EF Core 1.0简介

asp.net core 注入后仍然报错?

深入研究 Mini ASP.NET Core(迷你 ASP.NET Core),看看 ASP.NET Core 内部到底是如何运行的

.Net Core 学习 - ASP.NET Core 概念学习

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 14. ASP.NET Core Identity 入门